python - 根据索引值python更新和附加新行

标签 python pandas concatenation

我有两个数据帧 DF1, DF2 它们具有相同类型的数据并且共享一些索引值但不是全部

        DF1    
 index, a, b, c
[ abc   1, 3, 6 ]
[ acb   2, 4, 5 ]
[ cab   6, 5, 2 ]
[ bac   3, 6, 2 ]
[ bca   6, 8, 3 ]

        DF2
 index, a, b, d
[ abc   4, 7, 3 ]
[ kde   2, 5, 8 ]
[ lat   7, 2, 6 ]
[ bac   0, 4, 4 ]
[ bca   3, 6, 8 ]

因此我想实现以下目标

1.) 根据索引匹配将 D 列添加到 DF1

2.) 添加来自 DF2 的索引和行,它们在 DF1

中不存在
        RESULT   
 index, a, b, c, d
[ abc   1, 3, 6, 3 ]
[ acb   2, 4, 5, - ]
[ cab   6, 5, 2, - ]
[ bac   3, 6, 2, 4 ]
[ bca   6, 8, 3, 8 ]
[ kde   2, 5, -, 8 ]
[ lat   7, 2, -, 6 ]

最佳答案

让我们使用 combine_first :

创建数据:

DF1 = pd.DataFrame({'a':[1,2,6,3,6],'b':[3,4,5,6,8],'c':[6,5,2,2,3]},index=['abc','acb','cab','bac','bca'])
DF2 = pd.DataFrame({'a':[4,2,7,0,3],'b':[7,5,2,4,6],'d':[3,8,6,4,8]},index=['abc','kde','lat','bac','bca'])

df_combo = DF1.combine_first(DF2)
print(df_combo)

       a    b    c    d
abc  1.0  3.0  6.0  3.0
acb  2.0  4.0  5.0  NaN
bac  3.0  6.0  2.0  4.0
bca  6.0  8.0  3.0  8.0
cab  6.0  5.0  2.0  NaN
kde  2.0  5.0  NaN  8.0
lat  7.0  2.0  NaN  6.0

关于python - 根据索引值python更新和附加新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43261390/

相关文章:

python - 如何删除我的 csv 中非 ascii 感染的行

Python - Pandas - 将特定函数应用于给定级别 - 多索引数据帧

python - 定义函数以按名称选择列,Dataframe Python

PHP MYSQL CONCAT,字符串开头包含逗号

mysql - 如何在 MySQL 中将 2 个字符串转换为日期

python - 如何打印具有用户定义属性的类的实例?

python - 为什么 PyPDF2.PdfFileWriter 会忘记我对文档所做的更改?

python - 将 Suds SOAP 复杂数据类型解析为 Python 字典

python - 获取带有空日期的行 pandas python

sql - 无法在 Postgres (9.3) 索引中使用 concat 函数