我想用 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)覆盖我表的两列

python 在Jupyter Notebook中设置pandas数据帧的宽度

在 Python Pandas DataFrame 或 Jupyter Notebooks 中包装列名