python - 连接和分组填充 NaN 值

标签 python pandas dataframe group-by pandas-groupby

我有这个数据框:

df:
companycode    name    address    A     B     C     ...
1234           asd     qwe,56     Tyh   123   923
1234           asd     qwe,56     Zfhs  4828  01992
6472           yui     iop,56     Retgh 8484  8484
...

我还有一个看起来像这样的:

df2:
companycode    A     B     C       ...
1234           Jid   4123  141
6472           Low   1312  3234
...

名称和地址对于单个公司代码始终相同

我想以最终看起来像这样的方式连接、加入、合并或附加它们:

companycode    name    address    A     B     C     ...
1234           asd     qwe,56     Tyh   123   923
1234           asd     qwe,56     Zfhs  4828  01992
6472           yui     iop,56     Retgh 8484  8484
1234           asd     qwe,56     Jid   4123  141
6472           yui     iop,56     Low   1312  3234
...

由于单个公司代码的名称和地址始终相同,基本上我想将 df2 与 axis=0 中的 df 连接起来,并将原始 df 公司代码中的名称和地址拉到这个新行。写起来很困惑,但我认为在视觉上效果更好。

我该怎么做?

最佳答案

pd.concat 后跟 groupby 操作应该可以做到。

df = pd.concat([df1, df2], 0, ignore_index=True)\
                          .groupby('companycode').ffill()
df

       A     B     C address  companycode name
0    Tyh   123   923  qwe,56         1234  asd
1   Zfhs  4828  1992  qwe,56         1234  asd
2  Retgh  8484  8484  iop,56         6472  yui
3    Jid  4123   141  qwe,56         1234  asd
4    Low  1312  3234  iop,56         6472  yui

  • ignore_index=True 设置为在连接时创建新索引
  • 连接在 df2 的列中留下以前不存在的 NaN
  • companycode 执行 groupby 操作,然后执行 ffill 以使用来自的正确值填充这些 NaN同一组。

关于python - 连接和分组填充 NaN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46125738/

相关文章:

python - 如何使用 `xarray.DataArray` 索引器更新 `.sel()`?

python - 在访问日志中标记并总结每月的差距(流失)

python - 模块中函数的条件定义

python - 查找一个数字是否是给定集合中两个或多个数字的可能总和 - python

python - 以高效/pythonic 方式从列表中生成以下子集

python - 检验大量股票 yield 的自相关性

Rowwise sum 在 R 的 dplyr 中不起作用

python - 在 Ubuntu 18.04 上将 python 包安装到 salome_meca 的 python 发行版

python - 如何循环遍历 pandas 分组时间序列?

pandas - 数据框,只保留一列