我在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)
我们可以更新我们可以转换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)