python - 如何从列切片中的行值创建列标题,从而使列行值与列标题匹配?
问题描述
我想将数据框行值转换为列标题,但我只想要一个同名的列。然后我希望每个新列下的行值与列标题相同。我试过查看 get_dummies、pivot、pivot_table、group_by。任何帮助将非常感激。
数据:
将熊猫导入为 pd
In [1]: df = pd.DataFrame([['foo', 'bar', 'ham'], ['baz', 'foo', 'bar'], ['ham', 'baz', 'egg']], columns=['A', 'B', 'C'])
In [2]: df
Out[2]:
A B C
0 foo bar ham
1 baz foo bar
2 ham baz egg
我要这个:
In [3]:
Out[3]:
foo bar baz ham egg
0 foo bar ham
1 foo bar baz
2 baz ham egg
谢谢你。
解决方案
这个想法是将 DataFrame 转换为长格式,然后旋转:
df = df.reset_index()
df = pd.melt(df, id_vars=['index']).pivot(index = 'index', values='variable', columns='value')
for c in df.columns:
df.loc[df[c].notna(), c] = c
value bar baz egg foo ham
index
0 bar NaN NaN foo ham
1 bar baz NaN foo NaN
2 NaN baz egg NaN ham
详细解释:
melt
会将 DataFrame 转换为以下形式:
index variable value
0 0 A foo
1 1 A baz
2 2 A ham
3 0 B bar
4 1 B foo
5 2 B baz
6 0 C ham
7 1 C bar
8 2 C egg
然后使用 pivot 使列成为所有唯一值:
value bar baz egg foo ham
index
0 B NaN NaN A C
1 C A NaN B NaN
2 NaN B C NaN A
然后只需将所有非 na 列替换为列名。
推荐阅读
- ansible - Ansible pass value to installation commandline gui
- wordpress - 如何在 WordPress 中将自定义类添加到菜单项。下面是我的代码,它不起作用
- python - Python Pandas : compare two data-frames along one column and return content of rows of both data frames in another data frame
- android - RecyclerView inside a RemoteView
- android - Playing audio files from device internal storage. It keeps throwing IOException on void prepare()
- javascript - Session doesn't work
- lua - Trying to implement object-oriented programming in Lua, but it's not quite working
- server - Osisoft pi 数据存档 - 如何创建 piServer 集合
- python - Select specific a set of RGB channel in Keras training model image input
- javascript - How to sort column with dates on md-data-table using md-order-by attribute