Python 2.7 将2个数据帧合并为1,并对多个列进行排列
我有两个熊猫数据框,代表一个物品清单。两个数据帧都有四列:Python 2.7 将2个数据帧合并为1,并对多个列进行排列,python-2.7,pandas,merge,Python 2.7,Pandas,Merge,我有两个熊猫数据框,代表一个物品清单。两个数据帧都有四列: df1 id, item, colour, year 1, car, red, 2015 2, truck,, 2016 3, house, blue, 4, car, blue, 5, truck, red, 2015 df2 id, item, colour, year 1, house, blue, 2015 2, truck,, 2015 3, car, blue, 4, house,, 5, car, red, 2015
df1
id, item, colour, year
1, car, red, 2015
2, truck,, 2016
3, house, blue,
4, car, blue,
5, truck, red, 2015
df2
id, item, colour, year
1, house, blue, 2015
2, truck,, 2015
3, car, blue,
4, house,,
5, car, red, 2015
我知道这些清单可能代表同一个对象,因此我想将两者联系起来
比如说,
- df1[1]=df2[5](3个识别变量)
- df1[4]=df2[3](2个识别变量)
- df1[3](蓝色房屋)可能与df2[1](蓝色房屋,2015)相同
df = pd.DataFrame(
(df1.values[:, None] == df2.values).sum(2),
df1.index, df2.index)
matches = df.mask(df.lt(2)).stack()
def f(df):
i, j = df.name
return pd.concat([df1.loc[i], df2.loc[i]], axis=1, keys=['df1', 'df2']).T
matches.groupby(level=[0, 1]).apply(f).stack().unstack([-2, -1])
哇,看起来很酷!我不确定我是否了解所有内容(我首先感到困惑,因为您将df1放在df2的旁边,但事实上,结果是ID,对吗?)是否可以将年份作为精确匹配?(基本上2和2不一样)哇,看起来很酷!我不确定我是否了解所有内容(我首先感到困惑,因为您将df1放在df2的旁边,但事实上,结果是ID,对吗?)是否可以将年份作为精确匹配?(基本上2不能与2相同)