我的数据集不包含第30个,当更改为CSV时,第30个更改为第3个。我每个月有两个三分。使用Python将第二个第3个更改为第30个的最佳方法是什么?
答案 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