use*_*490 0 python pivot pandas
我有下一个问题。
例如我在 Pandas 中有下一个 DataFrame
a b c
'x' 1 100
'y' 2 100
'z' 3 100
Run Code Online (Sandbox Code Playgroud)
现在我想根据列中的值创建a新 DataFrame 的标题,列中的值是我用于索引的b第一行和第一列中的对应值。c目前我使用下一个代码:
import pandas
piv = df.pivot(index='c', columns='a')
new_df = pandas.DataFrame(piv.to_records())
Run Code Online (Sandbox Code Playgroud)
输出对我来说不够合适,因为我有b一个新 DataFrame 的列名称。也许有人可以在这里告诉我一个更好的解决方案来准确获得下一个输出:
index 'x' 'y' 'z'
100 1 2 3
Run Code Online (Sandbox Code Playgroud)
不应该是一个数据透视表,而只是一个真正的DataFrame。
您需要将值运算符添加到数据透视函数中:
piv = df.pivot(index='c', columns='a', values='b')
Run Code Online (Sandbox Code Playgroud)
完整示例:
piv = df.pivot(index='c', columns='a', values='b')
new_df = pd.DataFrame(piv.to_records()).rename(columns={'c':'index'})
new_df
index 'x' 'y' 'z'
0 100 1 2 3
Run Code Online (Sandbox Code Playgroud)