gpt4 book ai didi

python - Pandas 数据帧: Getting an Element in a Column by Month in Datetime Index?

转载 作者:行者123 更新时间:2023-12-01 09:29:54 25 4
gpt4 key购买 nike

我已成功按日期时间月份对数据框进行分组:

df.set_index('Date').groupby(pd.Grouper(freq='M')).sum()

数据如下所示:

           price, debt
2018-4-30, 40.0, 50,0
2018-5-31, 10.0, 0.0
2018-6-30, 30.0, 0.0
2018-7-31, 30.0, 10.0

当我运行print(df.index)时,它给我这个:

DatetimeIndex(['2018-04-30', '2018-05-31', '2018-6-30', '2018-7-31'], dtype='datetime64[ns]', name='Date', freq='M')

有没有办法按索引中的月/年匹配列?因此,如果我想获取 2018 年 7 月的价格,它将返回 30.0。如果没有,最好的方法是什么?谢谢。

最佳答案

使用partial string indexing按年份和月份 item将一个元素 Series 转换为标量:

print(df['2018-07']['price'].item())
30.0

或者使用按 MS 分组作为字符串的开头,并按第一天的 loc 选择:

df = df.set_index('Date').groupby(pd.Grouper(freq='MS')).sum()
print (df)
price debt
Date
2018-04-01 40.0 50.0
2018-05-01 10.0 0.0
2018-06-01 30.0 0.0
2018-07-01 30.0 10.0

print(df.loc['2018-07-01', 'price'])
30.0

另一个解决方案是将日期时间转换为月份周期 to_period :

df['Date'] = df['Date'].dt.to_period('M')
df = df.groupby('Date').sum()
print (df)
price debt
Date
2018-04 40.0 50.0
2018-05 10.0 0.0
2018-06 30.0 0.0
2018-07 30.0 10.0

print (df.loc['2018-07', 'price'])
30.0

如果使用某些旧版本的 pandas 也可以工作(感谢 Alexander ):

df.loc['2018-07', 'price']

但是在pandas 0.22.0中得到:

KeyError: 'the label [2018-07] is not in the [index]'

关于python - Pandas 数据帧: Getting an Element in a Column by Month in Datetime Index?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50056641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com