我有这个示例 DataFrame:
pd.DataFrame(data={1:[0,3,4,1], 2:[4,1,0,0], 3:[0,0,1,2], 4:[1,2,3,4] })
1 2 3 4
0 0 4 0 1
1 3 1 0 2
2 4 0 1 3
3 1 0 2 4
但是我想把它转换成下面的格式:
pd.DataFrame(data={1:[1,1,1,1], 2:[0,2,0,2], 3:[0,3,3,0], 4:[4,0,4,4] })
1 2 3 4
0 1 0 0 4
1 1 2 3 0
2 1 0 3 4
3 1 2 0 4
有什么方法或函数可以做到这一点,因为我有超过 100,000 行,所以 for 循环、字典、列表将不起作用。
请您参考如下方法:
我的条目:
data = df.reset_index().melt("index").query("value > 0")
out = data.pivot("index", "value", "value").fillna(0).astype(int)
给予
In [273]: out
Out[273]:
value 1 2 3 4
index
0 1 0 0 4
1 1 2 3 0
2 1 0 3 4
3 1 2 0 4
不幸的是,如果你想摆脱它们,你必须清除索引和列名,使用 df.index.name = df.columns.name = None 或 df.rename_axis(None).rename_axis(None, 1) 或者什么的。
