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

标签 python excel pandas

我已将 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()

enter image description here

关于python - 在 Pandas/Python 中使用可变大小的行更新数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41742571/

相关文章:

用于读取特定表、列的 sql 命令

c# - 在 Excel 中需要 12 小时格式

python - 如何在python中将不同的excel文件合并到一个具有不同工作表名称的工作簿中

python - 使用 python 创建 pandas 中时间列表的平均值

python - 如何覆盖夹层评论表单?

python - Django:manage.py 不打印错误堆栈跟踪

python - python中有限元节点应力点之间高效准确的插值

vba - 如果一个单元格等于另一个单元格,则复制并粘贴另一个单元格

pandas - 当组内达到 pandas 的阈值时删除行

python - 尽管 Shell 脚本已在 Mac OS X 登录项中注册,但它不会自动运行