Replace()找不到日期,也不会转换为其他字符串

Tom*_*ski 2 python pandas

我在csv中有一个数组:

    date        group
0   2015-01-02  WODKA
1   2015-01-02  PIWO
2   2015-01-02  2015-01-02
3   2015-01-03  WODKA
4   2015-01-03  PIWO
5   2015-01-03  2015-01-03
6   2015-01-03  WODKA
7   2015-01-03  PIWO
Run Code Online (Sandbox Code Playgroud)

我想将所有日期从"group"列转换为"sum".但我的代码不起作用......

import pandas as pd
import numpy as np
from datetime import datetime as dt

x = pd.read_csv("C:\\Users\dell\\Desktop\\list_1.csv", sep=';')
x.group = x.group.replace(dt, 'sum')
Run Code Online (Sandbox Code Playgroud)

Max*_*axU 5

我们可以更新我们可以转换group为的行datetime:

In [40]: df.loc[pd.to_datetime(df['group'], errors='coerce').notnull(), 'group'] = 'sum'

In [41]: df
Out[41]:
         date  group
0  2015-01-02  WODKA
1  2015-01-02   PIWO
2  2015-01-02    sum
3  2015-01-03  WODKA
4  2015-01-03   PIWO
5  2015-01-03    sum
6  2015-01-03  WODKA
7  2015-01-03   PIWO
Run Code Online (Sandbox Code Playgroud)

或者使用RegEx(注意:第一种解决方案更灵活,因为它支持不同的日期格式):

In [46]: df['sum'] = df['group'].str.replace(r'^\d{4}-\d{2}-\d{2}', 'sum')

In [47]: df
Out[47]:
         date       group    sum
0  2015-01-02       WODKA  WODKA
1  2015-01-02        PIWO   PIWO
2  2015-01-02  2015-01-02    sum
3  2015-01-03       WODKA  WODKA
4  2015-01-03        PIWO   PIWO
5  2015-01-03  2015-01-03    sum
6  2015-01-03       WODKA  WODKA
7  2015-01-03        PIWO   PIWO
Run Code Online (Sandbox Code Playgroud)

  • @TomaszPrzemski我会建议你***接受***MaxU的答案而不是我的答案,因为pandas API记录得很好,如果你喜欢我的答案,你可以***upvote***.我们需要考虑未来的访客,并将他们带到100%正确的答案. (2认同)