Python 更新和合并dataframe中的列
我在两个数据帧中有一列“a”,比如说df1和df2 df1: df2: 所需更新的df1: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中有新
| 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,如果你能告诉我你是如何学会在熊猫身上做这样的手术的,那会很有帮助。“你能给我建议一条我应该走的路吗?”莫希塔内加-这个问题很难回答,我特别喜欢