我想用 Python、Pandas、Jupyter 中的另一个主表覆盖一个小表
Posted
技术标签:
【中文标题】我想用 Python、Pandas、Jupyter 中的另一个主表覆盖一个小表【英文标题】:I would like to overwrite one small table with another main table in Python, Pandas, Jupyter 【发布时间】:2021-12-07 02:22:54 【问题描述】:我想合并两个表,这里显示:
import pandas as pd
df1 = 'name': ['John','Katie','Emma', 'Brian'],
'Stock name': ['Apple', 'Tesla','Samsung', 'NaN'],
'Price': [160,800,70, 'NaN],
'country': ['US','US','KOR', 'NaN'],
'No. Stock': ['4','10','50', 'NaN']
df1 = pd.DataFrame(df1)
data_2 = 'Stock name': ['Tesla', 'Apple','Samsung', 'Google, 'Square'],
'Price': [150,900,110,3000,300]
df2 = pd.DataFrame(data_2)
结果:
name Stock name Price country No. Stock
John Apple 150 US 4
Katie Tesla 900 US 10
Emma Samsung 110 KOR 50
Brian Google 300 NaN NaN
所以理想情况下,我想合并或使用任何函数来获得类似这样的结果。
非常感谢!!
【问题讨论】:
这能回答你的问题吗? Pandas Merging 101 【参考方案1】:尝试合并然后重命名新列:
df1 = df1.merge(df2, on='Stock name', how='left') # merging the two tables
df1.drop(columns=['Price_x'], inplace=True) # removing the old price columns
df1 = df1.rename(columns='Price_y': 'Price') # renaming the new price column
【讨论】:
【参考方案2】:按列使用map
Stock name
:
s = df2.set_index('Stock name')['Price']
df1['Price'] = df1['Stock name'].map(s)
print (df1)
name Stock name Price country No. Stock
0 John Apple 900.0 US 4
1 Katie Tesla 150.0 US 10
2 Emma Samsung 110.0 KOR 50
3 Brian NaN NaN NaN NaN
如果需要设置多列:
df1 = df1.set_index('Stock name')
df2 = df2.set_index('Stock name')
df1.update(df2)
print (df1)
name Price country No. Stock
Stock name
Apple John 900.0 US 4
Tesla Katie 150.0 US 10
Samsung Emma 110.0 KOR 50
NaN Brian NaN NaN NaN
【讨论】:
以上是关于我想用 Python、Pandas、Jupyter 中的另一个主表覆盖一个小表的主要内容,如果未能解决你的问题,请参考以下文章
Python API json 文件到 Jupyter 中的 Pandas 数据框
我想在 JUPYTER 中使用 pandas2ri 但出现 tzlocal 问题?
无法让熊猫打开 CSV [Python, Jupyter, Pandas]
我想从另一个表(熊猫、jupyter notebook、python)覆盖我表的两列