合并两个没有共同列的数据框以进行计算

5

我将尝试根据两个不同数据集中的信息进行计算。我需要第一个数据框中的所有信息重复多次,以匹配第二个数据框的信息。

例如:

数据框1:

name   price 
 A       1
 B       2

数据框架2:

 currency    value
  Dollar       1
  Euro         2 

预期输出:

合并后的DataFrame:

name   price   currency    Value
 A       1       Dollar      1
 A       1       Euro        1
 B       2       Dollar      4
 B       2       Euro        4

我一直在尝试类似的东西,使用apply和list,然后将其转换为DataFrame,但没有结果。不知何故,每个名称始终重复currs值:

lst = []
for index, currs in currencies.iterrows():
    lst.append(prices.apply(lambda pmRow: pd.Series({'name':pmRow['prices'], 'curr':currs['currency']}), axis=1))

有什么建议吗?谢谢!

1
为什么Value列是1,1,4,4,而不是1,2,1,2?如果后续使用df1.assign(k=1).merge(df2.assign(k=1)).drop('k', 1) - Zero
1个回答

4

看起来你需要使用 交叉连接:

df = pd.merge(df1.assign(A=1), df2.assign(A=1), on='A').drop('A', 1)
print (df)
  name  price currency  value
0    A      1   Dollar      1
1    A      1     Euro      2
2    B      2   Dollar      1
3    B      2     Euro      2

如果需要的话,可以使用多列 pricevalue:

df['value'] *= df['price']
print (df)
  name  price currency  value
0    A      1   Dollar      1
1    A      1     Euro      2
2    B      2   Dollar      2
3    B      2     Euro      4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接