Python 更新和合并dataframe中的列

Python 更新和合并dataframe中的列,python,pandas,dataframe,algorithmic-trading,Python,Pandas,Dataframe,Algorithmic Trading,我在两个数据帧中有一列“a”,比如说df1和df2 df1: df2: 所需更新的df1: | ID | A | | |------|---|--| | ID1 | 5 | | | ID2 | 1 | | | ID3 | 8 | | | ID4 | 8 | | | ID5 | 7 | | | ID6 | 8 | | | ID7 | 9 | | 如果ID在df2中,我想用df2中的值更新df1中的列“A”,否则我想在df1中保留相同的值。此外,如果在df2中有新

我在两个数据帧中有一列“a”,比如说df1和df2

df1:

df2:

所需更新的df1:

|  ID  | A |  |
|------|---|--|
| ID1  | 5 |  |
| ID2  | 1 |  |
| ID3  | 8 |  |
| ID4  | 8 |  |
| ID5  | 7 |  |
| ID6  | 8 |  |
| ID7  | 9 |  |
如果ID在df2中,我想用df2中的值更新df1中的列“A”,否则我想在df1中保留相同的值。此外,如果在df2中有新的ID,我想在df1中添加新的值

我看过pd.DataFrame.update的文档,它确实将值从df2更新为df1,但它没有将新值添加到df1。任何帮助都将不胜感激。提前谢谢

我认为需要:

df = pd.concat([df1, df2]).drop_duplicates(subset=['ID'], keep='last').sort_values('ID')
print (df)
    ID  A
0  ID1  5
1  ID2  1
2  ID3  8
3  ID4  8
3  ID5  7
4  ID6  8
5  ID7  9
说明

首先,两个数据帧一起:

print (pd.concat([df1, df2]))
    ID  A
0  ID1  5
1  ID2  6
2  ID3  7
3  ID4  8
0  ID1  5
1  ID2  1
2  ID3  8
3  ID5  7
4  ID6  8
5  ID7  9
由于创建了相同的
ID
,请使用“仅保留最后一个值”删除重复项:

print (pd.concat([df1, df2]).drop_duplicates(subset=['ID'], keep='last'))
    ID  A
3  ID4  8
0  ID1  5
1  ID2  1
2  ID3  8
3  ID5  7
4  ID6  8
5  ID7  9

最后一个排序方式是
ID
by.

您可以使用Pandas的merge方法执行相同的操作

您可以使用以下合并功能合并df1和df2:

df = pd.merge(df2,df1, how ='outer')
这里我将df2与df1合并。外部使用来自两个数据帧的键的并集。Union将获取df2中的所有密钥,并且仅获取df1中df2中不可用的密钥

第二步是删除ID列中的重复行

df = df.drop_duplicates(subset=['ID'],keep='first')
df =df.sort_values('ID')
这将删除列ID中的所有重复行,但第一次出现的行除外

第三步是根据ID列对行进行排序

df = df.drop_duplicates(subset=['ID'],keep='first')
df =df.sort_values('ID')

这很有效。谢谢只是想知道你是如何在初学者的时候遇到这些方法的。我如何在互联网上寻找这样的方法。谢谢@jezreal,如果你能告诉我你是如何学会在熊猫身上做这样的手术的,那会很有帮助。“你能给我建议一条我应该走的路吗?”莫希塔内加-这个问题很难回答,我特别喜欢