我正在尝试根据两个不同数据集中的信息进行计算。我需要第一个数据帧的所有信息重复与第二个数据帧的信息一样多的次数。
例子:
数据框1:
name price
A 1
B 2
数据框2:
currency value
Dollar 1
Euro 2
预期输出:
数据框合并:
name price currency Value
A 1 Dollar 1
A 1 Euro 1
B 2 Dollar 4
B 2 Euro 4
我一直在尝试类似的方法,使用 apply 和列表,然后将其转换为 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))
有什么建议么?谢谢!
看来你需要cross join
:
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
然后如果需要多列price
and value
:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)