Skip to main content
 首页 » 编程设计

python之使用其他数据框中的匹配值在数据框中创建新列

2025年05月04日16findumars

有两个数据帧,一个只有很少的信息(df1),另一个有所有数据(df2)。我试图在 df1 的新列中创建的内容,该列查找 Total2 值并根据名称相应地填充新列。请注意,在 df1 中可见的名称将始终在 df2 的名称中找到匹配项。我想知道 Pandas 中是否有一些功能已经做到了这一点?我的最终目标是创建一个条形图。

alldatapath = "all_data.csv" 
filteredpath = "filtered.csv" 
 
import pandas as pd 
 
df1 = pd.read_csv( 
    filteredpath,     # file name 
    sep=',',                    # column separator 
    quotechar='"',              # quoting character 
    na_values="NA",                # fill missing values with 0 
    usecols=[0,1],     # columns to use 
    decimal='.')                # symbol for decimals 
 
df2 = pd.read_csv( 
    alldatapath,     # file name 
    sep=',',                    # column separator 
    quotechar='"',              # quoting character 
    na_values="NA",                # fill missing values with 0 
    usecols=[0,1],     # columns to use 
    decimal='.')                # symbol for decimals 
 
df1 = df1.head(5) #trim to top 5 
 
print(df1) 
print(df2) 

输出(df1):

         Name  Total 
0  Accounting      3 
1   Reporting      1 
2     Finance      1 
3       Audit      1 
4    Template      2 

输出(df2):

          Name   Total2 
0    Reporting    100 
1   Accounting    120 
2      Finance    400 
3        Audit    500 
4  Information     50 
5     Template   1200 
6      KnowHow   2000 

最终输出 (df1) 应该是这样的:

         Name  Total  Total2(new column) 
0  Accounting      3    120 
1   Reporting      1    100 
2     Finance      1    400 
3       Audit      1    500 
4    Template      2   1200 

请您参考如下方法:

需要map按 Series 首先为新列:

df1['Total2'] = df1['Name'].map(df2.set_index('Name')['Total2']) 
print (df1) 
         Name  Total  Total2 
0  Accounting      3     120 
1   Reporting      1     100 
2     Finance      1     400 
3       Audit      1     500 
4    Template      2    1200 

然后 set_index与 DataFrame.plot.bar :

df1.set_index('Name').plot.bar()