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 数据帧中的单元格替换为较小数据帧中的单元格


猜你喜欢
- 如何在 python3 中将 OrderedDict 转换为常规字典 2022-01-01
- python check_output 失败,退出状态为 1,但 Popen 适用于相同的命令 2022-01-01
- pytorch 中的自适应池是如何工作的? 2022-07-12
- 分析异常:路径不存在:dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data; 2022-01-01
- padding='same' 转换为 PyTorch padding=# 2022-01-01
- 使用Heroku上托管的Selenium登录Instagram时,找不到元素';用户名'; 2022-01-01
- 如何将一个类的函数分成多个文件? 2022-01-01
- 如何在 Python 的元组列表中对每个元组中的第一个值求和? 2022-01-01
- 沿轴计算直方图 2022-01-01
- python-m http.server 443--使用SSL? 2022-01-01