Skip to main content
 首页 » 编程设计

python之Pandas之更新值序列

2025年05月04日13artech

我有这个示例 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) 或者什么的。