我在两个数据帧(例如df1和df2)中有一列“ A”。
df1:
| ID | A | |
|------|---|--|
| ID1 | 5 | |
| ID2 | 6 | |
| ID3 | 7 | |
| ID4 | 8 | |
df2:
| ID | A | |
|------|---|--|
| ID1 | 5 | |
| ID2 | 1 | |
| ID3 | 8 | |
| ID5 | 7 | |
| ID6 | 8 | |
| ID7 | 9 | |
必需的更新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
说明:
首先concat
两者DataFrame
一起:
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
创建了相同的内容,所以通过drop_duplicates
仅保留最后一个值来删除重复项:
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
依据sort_values
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句