我有这个数据框:
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/