Jas*_*per 5 python pandas pandas-groupby
我有一个非常大的数据框,带有日期 Index ,涵盖了多年的时间段。每一天都包含多个值。
Date (DT_index) Description Value1
1 2015-01-12 stringvalue 10
2 2015-01-12 stringvalue 12
3 2015-01-12 stringvalue 14
4 2015-02-12 stringvalue 16
5 2015-02-12 stringvalue 348
6 2015-09-12 stringvalue 1
7 2015-09-12 stringvalue 9
(.....)
8456 2017-11-03 stringvalue 10
8457 2017-11-03 stringvalue 111
8458 2017-11-04 stringvalue 29
Run Code Online (Sandbox Code Playgroud)
我想要的是根据月/年将此 csv 拆分为单独的文件。(因此文件如下:12-2015.csv、01-2016.csv、02-2016.csv)
我已将大型 csv 加载到 pandas df 中,并按月对其进行分组,如下所示
dfgp = df.groupby(pd.TimeGrouper(freq='M'))
Run Code Online (Sandbox Code Playgroud)
但我唯一可用的操作似乎是“总和”或“平均”之类的东西。我不希望这样做,我想按月对大型 DF 进行切片,而不是执行更改或聚合数据的 .apply 操作。
我也尝试过这段代码:
dfgp = [group[1] for group in df.groupby(df.index.date)]
for x in result:
name = str(x.index.date.month.year)
x.to_csv(name, sep=';')
Run Code Online (Sandbox Code Playgroud)
这个方法非常接近。我有两个问题。1.我的命名方法不起作用:
'numpy.ndarray' object has no attribute 'month'
Run Code Online (Sandbox Code Playgroud)
我用这段代码纠正最后一个问题:
result = [group[1] for group in df.groupby(df.index.date.month)]
Run Code Online (Sandbox Code Playgroud)
但这只是引发了与之前相同的错误:
'numpy.ndarray' object has no attribute 'month'
Run Code Online (Sandbox Code Playgroud)
有谁知道我做错了什么?
咱们试试吧:
for n,g in df.groupby(pd.Grouper(freq='M')):
name = n.strftime('%Y%m') + '.csv'
g.to_csv(name, sep=';')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2792 次 |
最近记录: |