Skip to main content
 首页 » 编程设计

python之在 Pandas/Python 中使用可变大小的行更新数据框

2025年05月04日27yxwkf

我已将 Excel 工作表导入 Pandas 的数据框中。空白值被替换为“NA”。我想要做的是,对于每个行值,根据字典或数据框的索引替换它们。

df1 = pd.DataFrame( 
    {'c1':['a','a','b','b'], 'c2':['1','2','1','3'], 'c3':['2','NA','3','NA']},index=['first','second','third','last']) 
 
>>> df1 
       c1 c2  c3 
first  a  1    2 
second a  2    NA 
third  b  1    3 
last   b  3    NA 

我想根据另一个数据框(或字典)的索引替换每一行中的值。

df2=pd.DataFrame( 
    {'val':['v1','v2','v3']},index=['1','2','3']) 
 
>>> df2 
   val 
1  v1   
2  v2  
3  v3  

这样输出就变成了

>>> out 
       c1 c2  c3 
first  a  v1  v2 
second a  v2  NA 
third  b  v1  v3 
last   b  v3  NA 

您将如何通过 Pandas 和/或 Python 来做到这一点?一种方法是逐行搜索,但也许有更简单的方法?

编辑:重要的是,在我的真实案例中,性能成为一个问题,因为我正在处理大小为 4653 行 × 1984 列的“df1”。

提前致谢

请您参考如下方法:

一种方法是 stack + replace + unstack 组合:

df1.stack().replace(df2.val).unstack()