在 DataFrame.pivot() 上,结果与我预期的不同
On DataFrame.pivot(), different result with what I expected
我指的是
https://github.com/pandas-dev/pandas/tree/main/doc/cheatsheet.
如您所见,如果我使用 pivot()
,则所有值都在行号 0 和 1 中。
但是如果我确实使用 pivot()
,结果会像下面这样不同。
pivot()
之前的DataFrame:
pivot()
之后的数据帧:
这个结果是故意的吗?
在您的数据中,缺少灰色列(行的索引):
df = pd.DataFrame({'variable': list('aaabbbccc'), 'value': range(9)})
print(df)
# Output
variable value
0 a 0
1 a 1
2 a 2
3 b 3
4 b 4
5 b 5
6 c 6
7 c 7
8 c 8
添加灰色列:
df['grey'] = df.groupby('variable').cumcount()
print(df)
# Output
variable value grey
0 a 0 0
1 a 1 1
2 a 2 2
3 b 3 0
4 b 4 1
5 b 5 2
6 c 6 0
7 c 7 1
8 c 8 2
现在您可以旋转了:
df = df.pivot('grey', 'variable', 'value')
print(df)
# Output
variable a b c
grey
0 0 3 6
1 1 4 7
2 2 5 8
花时间阅读
我指的是 https://github.com/pandas-dev/pandas/tree/main/doc/cheatsheet.
如您所见,如果我使用 pivot()
,则所有值都在行号 0 和 1 中。
但是如果我确实使用 pivot()
,结果会像下面这样不同。
pivot()
之前的DataFrame:
pivot()
之后的数据帧:
这个结果是故意的吗?
在您的数据中,缺少灰色列(行的索引):
df = pd.DataFrame({'variable': list('aaabbbccc'), 'value': range(9)})
print(df)
# Output
variable value
0 a 0
1 a 1
2 a 2
3 b 3
4 b 4
5 b 5
6 c 6
7 c 7
8 c 8
添加灰色列:
df['grey'] = df.groupby('variable').cumcount()
print(df)
# Output
variable value grey
0 a 0 0
1 a 1 1
2 a 2 2
3 b 3 0
4 b 4 1
5 b 5 2
6 c 6 0
7 c 7 1
8 c 8 2
现在您可以旋转了:
df = df.pivot('grey', 'variable', 'value')
print(df)
# Output
variable a b c
grey
0 0 3 6
1 1 4 7
2 2 5 8
花时间阅读