这是我下面的数据框“df”按日期排序
item price date
A 11.2 2021-12-31
B 32.4 2021-12-31
C 75.5 2021-12-31
A 89.3 2021-12-30
B 12.2 2021-12-30
C 14.2 2021-12-30
基本上我只需要最后可用日期的数据
即
item price date
A 11.2 2021-12-31
B 32.4 2021-12-31
C 75.5 2021-12-31
我尝试了下面的代码,它不符合预期的工作。我是熊猫新手,请帮助。
df = df.set_index(['date'])
df = df.loc[df['date'][0]]
您可以提取每个项目的最长日期的索引,然后选择它们:
idxs = df.groupby(['item'])['date'].transform(max) == df['date']
print(df[idxs])
不要忘记,您可以始终使用cript=df.to_dict()
或list=df. toList()
,并使用您可能更有经验的cript或列表。
您可以根据项目和日期列对数据框进行排序(默认为升序
顺序)并使用尾
返回最后一行:
df.sort_values(['item','date']).groupby(['item']).tail(1)
item price date
0 A 11.2 2021-12-31
1 B 32.4 2021-12-31
2 C 75.5 2021-12-31
pd.to_datetime
部分将确保您的日期是datetime类型。所以本质上你需要:
df.assign(date = pd.to_datetime(df['date'])).sort_values(['item','date']).groupby(['item']).tail(1)