我已经从.csv文件中读取了一个DataFrame,其中包含以下列:
columns = ['Year', 'month', 'column1', 'column2','column3', 'column4', 'column5', 'column6', 'column7', 'column8','Value']
数据框有116408行,但在df = df.drop_duplicates()
之后它现在有98829(我不知道为什么它首先有重复)
我需要像这样拆开它:
1 2 3 ....
2016 2017 2018 2016 2017 2018 2016 2017 2018 ....
column1 column2 .......
a1 a2 ... 24 12 20 22 15 21 12 11 13 ...
b1 b2 ... 18 11 21 21 11 31 14 41 14 ...
到目前为止,我已经尝试过了:
df = df.set_index(columns[:-1], append=True)
df = df.unstack(level=[0,1])
但这需要永远。 (如果我删除了append
,则会收到此错误:ValueError: Index contains duplicate entries, cannot reshape
)
有没有人有其他选择或任何想法为什么花了这么长时间? 我还没有看到结果,也没有任何错误。
答案 0 :(得分:3)
我相信你正在解开错误的关卡。因为设置索引时有append=True
,所以新索引中的第一个值就是它(你没有指出这个索引值是什么,所以我假设一个连续范围从零开始)。接下来的两个级别将是Year
和month
。
所以,试试这个来获得你想要的输出:
df.unstack(level=[1, 2])
np.random.seed(0)
columns = ['Year', 'month', 'column1', 'column2', 'column3', 'column4', 'column5', 'column6', 'column7', 'column8','Value']
df = pd.DataFrame(np.random.randn(99, 11), columns=columns)
df.loc[:, 'Year'] = [2016, 2017, 2018] * 33
df.loc[:, 'month'] = [1, 2, 3] * 33
>>> df.set_index(columns[:-1], append=True).unstack(level=[1,2]).head()
Value \
Year 2016
month 1
column1 column2 column3 column4 column5 column6 column7 column8
0 0.978738 2.240893 1.867558 -0.977278 0.950088 -0.151357 -0.103219 0.410599 0.144044
1 0.121675 0.443863 0.333674 1.494079 -0.205158 0.313068 -0.854096 -2.552990 NaN
2 2.269755 -1.454366 0.045759 -0.187184 1.532779 1.469359 0.154947 0.378163 NaN
3 0.156349 1.230291 1.202380 -0.387327 -0.302303 -1.048553 -1.420018 -1.706270 1.950775
4 -1.252795 0.777490 -1.613898 -0.212740 -0.895467 0.386902 -0.510805 -1.180632 NaN
\
Year 2017
month 2
column1 column2 column3 column4 column5 column6 column7 column8
0 0.978738 2.240893 1.867558 -0.977278 0.950088 -0.151357 -0.103219 0.410599 NaN
1 0.121675 0.443863 0.333674 1.494079 -0.205158 0.313068 -0.854096 -2.552990 0.653619
2 2.269755 -1.454366 0.045759 -0.187184 1.532779 1.469359 0.154947 0.378163 NaN
3 0.156349 1.230291 1.202380 -0.387327 -0.302303 -1.048553 -1.420018 -1.706270 NaN
4 -1.252795 0.777490 -1.613898 -0.212740 -0.895467 0.386902 -0.510805 -1.180632 -0.028182
Year 2018
month 3
column1 column2 column3 column4 column5 column6 column7 column8
0 0.978738 2.240893 1.867558 -0.977278 0.950088 -0.151357 -0.103219 0.410599 NaN
1 0.121675 0.443863 0.333674 1.494079 -0.205158 0.313068 -0.854096 -2.552990 NaN
2 2.269755 -1.454366 0.045759 -0.187184 1.532779 1.469359 0.154947 0.378163 -0.887786
3 0.156349 1.230291 1.202380 -0.387327 -0.302303 -1.048553 -1.420018 -1.706270 NaN
4 -1.252795 0.777490 -1.613898 -0.212740 -0.895467 0.386902 -0.510805 -1.180632 NaN