【问题标题】:Python Pandas - get an average of 'SNOW' per month from each location/ 'NAME'Python Pandas - 从每个位置/“NAME”平均每月获得“SNOW”
【发布时间】:2019-09-03 19:42:41
【问题描述】:

我有一个名为 Data.csv 的 .csv 文件。我需要找到每个位置或“NAME”每月的平均降雪量。然后我需要将每年的总数(2016 年和 2017 年)保存到单独的 .csv 文件中。我正在使用熊猫。不知道从哪里开始。

这是我现在通过研究收集的东西。

import pandas as pd

df2 = pd.read_csv("Data.csv")

gname = df2.groupby('NAME')

for NAME, Name_df2 in data:
    df2['DATE'] = pd.to_datetime(df2['DATE'])
    df2.groupby([df.DATE.dt.month,'NAME','SNOW']).mean().sort_values()

【问题讨论】:

  • 您的问题是什么?有错误信息吗?给我们一些样本数据怎么样?
  • 一开始就没有什么问题。我会给我们一个示例数据框,因为我们无法访问 Data.csv,所以创建类似 pd.DataFrame({'NAME':['Boston','Boston','New York', 'New York'], 'year':[2016, 2017, 2017, 2016], 'totals':[5.6, 66, 87, 55]}) 或类似的东西。另一件事是我没有看到你在哪里定义数据?

标签: python pandas csv group-by datasource


【解决方案1】:

需要您先向我们提供示例数据。但这是有方向的:

import pandas as pd

df = pd.read_csv('data.csv')
df['DATE'] = pd.to_datetime(df['DATE'])
g = df.groupby([df.DATE.dt.year, df.DATE.dt.month, 'NAME'])['SNOW'].mean().reset_index().sort_values()

df_2016 = df.loc[df.DATE.dt.year == 2016]
df_2016.to_csv('2016 snow totals.csv', index=False)
df_2017 = df.loc[df.DATE.dt.year == 2017]
df_2017.to_csv('2017 snow totals.csv', index=False)

如果您有超过 2 年的时间,您应该将分组的数据框拆分为一个列表并像这样遍历它。

for year in range(df.DATE.dt.year.min(), df.DATE.dt.year.max()):
    df.loc[df.DATE.dt.year == year].to_csv(year + '_snowfall.csv', index=False)

【讨论】:

  • 使用python,我们甚至可以将这7行代码压缩为2行..(尽我所能..)
猜你喜欢
  • 2020-08-21
  • 2016-01-25
  • 2019-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 1970-01-01
相关资源
最近更新 更多