gpt4 book ai didi

python - 在 Pandas 中将 GroupBy 与 DateTime 结合使用 (Python)

转载 作者:太空宇宙 更新时间:2023-11-03 14:12:09 25 4
gpt4 key购买 nike

我有一个从 API 获取的数据,如下所示(当然是 JSON 形式):

0,1500843600,8872
1,1500807600,18890
2,1500811200,2902
.
.
.

其中第二列是以刻度为单位的日期/时间,第三列是某个值。我基本上拥有几个月内每天每小时的数据。现在,我想要实现的是我想获得每周第三列的最小值。我有下面的代码段,它正确地为我返回最小值,但除了返回最小值之外,我还想返回特定的 Timestamp 作为该周发生的最低日期/时间。如何修改下面的代码,以便我还可以获得 Timestamp 以及最小值。

df = pandas.DataFrame(columns=['Timestamp', 'Value'])

# dic holds the data that I get from my API.
for i in range(len(dic)):
df.loc[i] = [dic[i][1], dic[i][2]]

df['Timestamp'] = pandas.to_datetime(df['Timestamp'], unit='s')
df.sort_values(by=['Timestamp'])
df.set_index(df['Timestamp'], inplace=True)

df.groupby([pandas.Grouper(key='Timestamp', freq='W-MON')])['Value'].min()

最佳答案

我认为你需要DataFrameGroupBy.idxmin获取 Timestamp 列的 min 值的索引,然后按 loc 选择:

df['Timestamp'] = pd.to_datetime(df['Timestamp'], unit='s')

df = df.loc[df.groupby([pd.Grouper(key='Timestamp', freq='W-MON')])['Value'].idxmin()]
print (df)
Timestamp Value
2 2017-07-23 12:00:00 2902

详细信息:

print (df.groupby([pd.Grouper(key='Timestamp', freq='W-MON')])['Value'].idxmin())
Timestamp
2017-07-24 2
Freq: W-MON, Name: Value, dtype: int64

关于python - 在 Pandas 中将 GroupBy 与 DateTime 结合使用 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48419506/

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