解决大型数据集中错误日期的最佳方法

时间:2019-05-07 01:09:24

标签: python pandas

我的数据集不包含第30个,当更改为CSV时,第30个更改为第3个。我每个月有两个三分。使用Python将第二个第3个更改为第30个的最佳方法是什么?

https://ibb.co/g7XM2cC

1 个答案:

答案 0 :(得分:1)

您可以使用cumcount标记第二个值并进行更改:

import pandas as pd

df = pd.DataFrame([['1/3/2010'], ['1/3/2010']], columns=['date']).astype('datetime64')
print(df)

condition = (df['date'].dt.day == 3) & (df.groupby(pd.Grouper(key='date', freq='M')).cumcount() == 1)
subset = df.loc[condition, 'date']
df.loc[condition, 'date'] = pd.to_datetime({'year': subset.dt.year, 'month': subset.dt.month, 'day': 30})
print(df)

输出:

        date
0 2010-01-03
1 2010-01-03

        date
0 2010-01-03
1 2010-01-30