我有一个这种格式的熊猫系列:
date
2017-03-15 1236.43
2017-03-16 1118.96
2017-03-17 1063.48
2017-03-18 940.18
2017-03-19 967.31
2017-03-20 1005.05
2017-03-21 1043.87
2017-03-22 997.78
2017-03-23 1022.02
2017-03-24 927.35
2017-03-25 890.43
2017-03-26 946.65
2017-03-27 961.80
2017-03-28 1015.45
...
2018-03-06 10589.28
2018-03-07 9470.73
2018-03-08 9534.02
Name: BTC, Length: 1382, dtype: float64
我无法找到一个很好的方法来按月拆分,我已经尝试过groupby,它给了我一个非常好的输出,但它也汇集了不同年份的数据,这是一个问题
IN[]: dflist_BTC = []
for group in data.BTC.groupby(df.index.month):
dflist_BTC.append(group[1])
print(dflist_BTC)
OUT[]: [date
2018-01-01 12877.67
2018-01-02 12934.16
2018-01-03 14579.71
2018-01-04 14244.67
...
2018-01-28 11407.94
2018-01-29 11089.52
2018-01-30 9871.21
2018-01-31 9698.13
Name: BTC, dtype: float64, date
2018-02-01 8726.95
2018-02-02 7786.20
2018-02-03 8194.68
...
2018-02-27 10154.24
2018-02-28 10303.14
Name: BTC, dtype: float64, date
2017-03-15 1236.43
2017-03-16 1118.96
2017-03-17 1063.48
2017-03-18 940.18
2017-03-19 967.31
2017-03-20 1005.05
2017-03-21 1043.87
2017-03-22 997.78
2017-03-23 1022.02
2017-03-24 927.35
2017-03-25 890.43
2017-03-26 946.65
2017-03-27 961.80
2017-03-28 1015.45
2017-03-29 1008.34
2017-03-30 1020.93
2017-03-31 1035.18
#Here there is the problem, it combines 2017 and 2018
2018-03-01 10247.56
2018-03-02 10801.45
2018-03-03 11043.12
2018-03-04 11084.01
2018-03-05 11431.55
2018-03-06 10589.28
2018-03-07 9470.73
2018-03-08 9534.02
Name: BTC, dtype: float64, date
2017-04-01 1067.47
2017-04-02 1074.21
...
2017-12-30 11962.09
2017-12-31 12359.43
Name: BTC, dtype: float64]
我在Stackoverflow和编码方面都是新手,所以如果我没有以更好的方式解释自己,我很抱歉。如果你能帮助我,我将不胜感激。
答案 0 :(得分:0)
我认为如果需要分隔DataFrame,可以将groupby
对象YYYY-MM
转换为dict of DataFrame
s:
dfs = dict(tuple(data.BTC.groupby(data.index.strftime('%Y-%m'))))
print (dfs['2017-03'])
2017-03-15 1236.43
2017-03-16 1118.96
2017-03-17 1063.48
2017-03-18 940.18
2017-03-19 967.31
2017-03-20 1005.05
2017-03-21 1043.87
2017-03-22 997.78
2017-03-23 1022.02
2017-03-24 927.35
2017-03-25 890.43
2017-03-26 946.65
2017-03-27 961.80
2017-03-28 1015.45
Name: BTC, dtype: float64