gpt4 book ai didi

python - 对具有相同日期的单元格求和,并按多列分组

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

我正在尝试从 thingspeak.com 生成的 .csv 文件中提取信息。以下是我的名为“feeds.csv”的 .csv 文件的快照

https://i.imgur.com/WyN6oAn.png

“field2”列只是值 1,代表分钟。我想将所有“field2”值添加到同一日期(我已经这样做了)。

我已经能够使用 groupby 函数成功解析日期并添加与日期相关的“field2”值。

生成的新 .csv 文件显示在下面的链接中。其中 Stations 是“field1”值,“Time(分钟)”是“field2”值的总和。

https://i.imgur.com/0SzOdtZ.png

但是我希望“车站”列是特定日期的车站。现在它只是计算“field1”下的条目数。

import pandas as pd
df = pd.read_csv("feeds.csv")

df.created_at = df.created_at.str.split(' ').str[0]
dfout = df.groupby(['created_at']).count()
# dfout2 = df.groupby('field1') #Experimenting (ignore for now)

dfout.reset_index(level=0, inplace=True)
finaldf = dfout[['created_at', 'field1', 'field2']]
finaldf.columns = ['Date', 'Station', 'On Time (minutes)']

finaldf.to_csv('insertnewname.csv', index=False)

输出应如下所示(显示在下面的链接中):

https://i.imgur.com/fNHGaAU.png

我知道使用 .count() 只是添加 field2 值的行数(而不是总和)。

如有任何帮助,我们将不胜感激。

附言。我对这些东西一窍不通,所以任何有助于解释额外代码的解释都会大有帮助。

最佳答案

我相信您可以通过将 created_at 列添加到 groupby 并指定 field2 列来聚合 sum 来更改您的解决方案>:

df = pd.read_csv("feeds.csv")

df.created_at = df.created_at.str.split().str[0]
finaldf = df.groupby(['created_at', 'field1'], as_index=False)['field2'].sum()

finaldf.columns = ['Date', 'Station', 'On Time (minutes)']

finaldf.to_csv('insertnewname.csv', index=False)

另一种使用日期时间的解决方案 - 首先将 parse_dates 参数添加到 read_csv用于转换,因此可能传递给 groupby Series.dt.date :

df = pd.read_csv("feeds.csv", parse_dates=['created_at'])

finaldf = df.groupby([df['created_at'].dt.date, 'field1'], as_index=False)['field2'].sum()

finaldf.columns = ['Date', 'Station', 'On Time (minutes)']

finaldf.to_csv('insertnewname.csv', index=False)

关于python - 对具有相同日期的单元格求和,并按多列分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58655098/

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