How to replace cells in a larger Pandas dataframe with cells from a smaller dataframe(如何将较大 pandas 数据帧中的单元格替换为较小数据帧中的单元格)
本文介绍了如何将较大 pandas 数据帧中的单元格替换为较小数据帧中的单元格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有两个 pandas 数据帧:
较小:
较大:
我希望匹配Ticker和Year,然后用较小的数据帧中的数字替换第一列和最后一列中的数字。
我尝试过使用pd.merge,但我只成功地添加了行或列,而没有替换特定的单元格。有人能发布一些代码来实现这一点吗?
推荐答案
可以使用merge
WITH LEFT JOIN和suffixes
,然后使用combine_first
WITH RENAME FOR REMOVE_
:
df1 = pd.DataFrame({'Ticker':list('abcdef'),
'Year':[2013,2014,2013,2014,2013,2014],
'C':[7,8,9,4,2,3],
'Last':[1,3,5,7,1,0],
'First':[5,3,6,9,2,4],
'F':list('aaabbb')})
print (df1)
C F First Last Ticker Year
0 7 a 5 1 a 2013
1 8 a 3 3 b 2014
2 9 a 6 5 c 2013
3 4 b 9 7 d 2014
4 2 b 2 1 e 2013
5 3 b 4 0 f 2014
df2 = pd.DataFrame({'First':[4,5,4,5],
'Last':[7,8,9,4],
'Year':[2013,2014,2014,2015],
'Ticker':list('aabc')})
print (df2)
First Last Ticker Year
0 4 7 a 2013
1 5 8 a 2014
2 4 9 b 2014
3 5 4 c 2015
df = df1.merge(df2, suffixes=('_',''), on=['Ticker','Year'], how='left')
df1[['First','Last']] = (df[['First','Last']].combine_first(df[['First_','Last_']]
.rename(columns=lambda x: x.strip('_'))))
print (df1)
C F First Last Ticker Year
0 7 a 4.0 7.0 a 2013
1 8 a 4.0 9.0 b 2014
2 9 a 6.0 5.0 c 2013
3 4 b 9.0 7.0 d 2014
4 2 b 2.0 1.0 e 2013
5 3 b 4.0 0.0 f 2014
这篇关于如何将较大 pandas 数据帧中的单元格替换为较小数据帧中的单元格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:如何将较大 pandas 数据帧中的单元格替换为较小数据帧中的单元格


基础教程推荐
猜你喜欢
- 比较两个文本文件以找出差异并将它们输出到新的文本文件 2022-01-01
- matplotlib 设置 yaxis 标签大小 2022-01-01
- 对多索引数据帧的列进行排序 2022-01-01
- Python 中是否有任何支持将长字符串转储为块文字或折叠块的 yaml 库? 2022-01-01
- 在 Django Admin 中使用内联 OneToOneField 2022-01-01
- Kivy 使用 opencv.调整图像大小 2022-01-01
- Python,确定字符串是否应转换为 Int 或 Float 2022-01-01
- kivy 应用程序中的一个简单网页作为小部件 2022-01-01
- 在 Python 中将货币解析为数字 2022-01-01
- 究竟什么是“容器"?在蟒蛇?(以及所有的 python 容器类型是什么?) 2022-01-01