【问题标题】:Assist me in Joining These Data Frames in Python帮助我在 Python 中加入这些数据框
【发布时间】:2020-06-30 14:27:38
【问题描述】:

这是我的场景。假设我有这两个数据集-

dic = {'firstname':['John','John','John','John','John','Susan','Susan',
                    'Susan','Susan','Susan','Mike','Mike','Mike','Mike',
                    'Mike'],
       'lastname':['Smith','Smith','Smith','Smith','Smith','Wilson',
                   'Wilson','Wilson','Wilson','Wilson','Jones','Jones',
                   'Jones','Jones','Jones'],
       'company':['KFC','BK','KFC','KFC','KFC','BK','BK','WND','WND',
                  'WND','TB','CHP','TB','CHP','TB'],
       'paid':[200,300,250,100,900,650,430,218,946,789,305,750,140,860,310]}
df1 = pd.DataFrame(dic)
print(df1)

dic = {'firstname':['John','John','Susan','Susan','Mike','Mike'],
       'lastname':['Smith','Smith','Wilson','Wilson','Jones','Jones'],
       'company':['KFC','BK','BK','WND','TB','CHP'],
       'paid':[1450,300,1080,1953,755,1610]}
df2 = pd.DataFrame(dic)
print(df2)

输出 1 是-

   firstname lastname company  paid
0       John    Smith     KFC   200
1       John    Smith      BK   300
2       John    Smith     KFC   250
3       John    Smith     KFC   100
4       John    Smith     KFC   900
5      Susan   Wilson      BK   650
6      Susan   Wilson      BK   430
7      Susan   Wilson     WND   218
8      Susan   Wilson     WND   946
9      Susan   Wilson     WND   789
10      Mike    Jones      TB   305
11      Mike    Jones     CHP   750
12      Mike    Jones      TB   140
13      Mike    Jones     CHP   860
14      Mike    Jones      TB   310

输出 2 是-

  firstname lastname company  paid
0      John    Smith     KFC  1450
1      John    Smith      BK   300
2     Susan   Wilson      BK  1080
3     Susan   Wilson     WND  1953
4      Mike    Jones      TB   755
5      Mike    Jones     CHP  1610

我想做的是将df2付费列添加到df1详细视图的每个部分

我假设会有一个合并函数可以帮助我,但我需要一些帮助来编写代码。

所以我的理想输出应该是-

   firstname lastname company  paid sum_paid
0       John    Smith     KFC   200     1450
1       John    Smith      BK   300      300
2       John    Smith     KFC   250     1450
3       John    Smith     KFC   100     1450
4       John    Smith     KFC   900     1450
5      Susan   Wilson      BK   650     1080
6      Susan   Wilson      BK   430     1080
7      Susan   Wilson     WND   218     1953
8      Susan   Wilson     WND   946     1953
9      Susan   Wilson     WND   789     1953
10      Mike    Jones      TB   305      755
11      Mike    Jones     CHP   750     1610
12      Mike    Jones      TB   140      755
13      Mike    Jones     CHP   860     1610
14      Mike    Jones      TB   310      755

【问题讨论】:

  • 你尝试合并了吗?
  • 您的 sum_paid 列看起来像 df1.groupby(['firstname', 'lastname', 'company'])['paid'].transform('sum') 的结果?不需要df2
  • @YOBEN_S,再次尝试合并后,我想通了。不知道为什么第一次没有成功
  • 这能回答你的问题吗? Pandas Merging 101

标签: python pandas dataframe join merge


【解决方案1】:

这样做:

df = df1.merge(df2, on=['firstname', 'lastname', 'company']).rename(columns={'paid_y': 'sum_paid', 'paid_x': 'paid'})
print(df)

   firstname lastname company    paid  sum_paid
0       John    Smith     KFC     200    1450
1       John    Smith     KFC     250    1450
2       John    Smith     KFC     100    1450
3       John    Smith     KFC     900    1450
4       John    Smith      BK     300     300
5      Susan   Wilson      BK     650    1080
6      Susan   Wilson      BK     430    1080
7      Susan   Wilson     WND     218    1953
8      Susan   Wilson     WND     946    1953
9      Susan   Wilson     WND     789    1953
10      Mike    Jones      TB     305     755
11      Mike    Jones      TB     140     755
12      Mike    Jones      TB     310     755
13      Mike    Jones     CHP     750    1610
14      Mike    Jones     CHP     860    1610

【讨论】:

    猜你喜欢
    • 2018-12-18
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 2016-10-06
    • 1970-01-01
    相关资源
    最近更新 更多