【发布时间】:2021-07-17 09:16:11
【问题描述】:
以下问题: Python Pandas Only Compare Identically Labeled DataFrame Objects & How to create a new data frame based on conditions from another data frame.
我正在尝试在已经存在的数据框 df1 中创建一个列,其值以另一个具有不同索引和列的现有数据框 df2 为条件。
在 df2 ['Home'] 城市有一个 ['Home_ranking']。我需要将 df1 中的 ['Home_ranking'] 与 df2 匹配,条件是 ['Home'] 城市应该匹配。 比如B市是df1中的第一个['Home']城市,我需要得到它在df2中的排名,即2。所以df1中的第一个['Home_ranking']是2,以此类推。
df1 有 50 行和更多列,而 df2 只有 20 行和 4 列。
>>> print(df1)
Home Away Home_ranking Away_ranking [other columns..]
0 city B city C 0 0
1 city D city D 0 0
2 city B city D 0 0
3 city A city A 0 0
>>> print(df2)
Home Away Home_ranking Away_ranking
0 city A city B 12 5
1 city D city C 4 7
2 city F city A 1 9
3 city B city D 2 8
预期结果
>>> print(df1)
Home Away Home_ranking Away_ranking
0 city B city C 2 7
1 city D city D 4 8
2 city B city D 2 8
3 city A city A 12 9
我已经尝试了前面问题中建议的许多事情,但似乎没有一个对我有用。我也试过:
for i in df1.Home :
if df1.Home == df2.Home :
df1['Home_ranking'][i] = df2.Home_ranking[i]
产生“ValueError:只能比较标签相同的系列对象”
df1['Home_ranking'][i] = df2.loc[(df2['Home'] == df1['Home'][i])].Home_ranking
yields "KeyError: 'city B' 我迷路了,欢迎任何帮助。
【问题讨论】: