我试图将两个数据帧(df2和df3)中的每个值相乘,并将每个答案添加到其中一个数据帧中的列中。 df2由数据组成,其中列是类型,行是每天平均花费的成本。 df3包含购买每辆汽车的数量。
我希望每天将每列和每行相乘,然后将其添加到已在df3中创建的名为Money的列中。
我已经设置了for循环,df1是我可以判断是否有人购买或出售汽车的地方,我希望以某种方式在那里合并一行来循环遍历df2的每一行并将其乘以df3并添加金钱栏中的每一天的金额:
hadoop fs -ls /path/of/hdfs/location/ | head -10
答案 0 :(得分:1)
我认为您可以按str.contains
比较字符串,使用loc
和sum
:
print df1['Buy'].str.contains('purchase')
2010-03-16 True
2010-04-19 False
Name: Buy, dtype: bool
print (df3 * df2).sum(axis=1)
2010-03-16 2300000000
2010-04-19 -17826350000
dtype: int64
df3.loc[ df1['Buy'].str.contains('purchase'), 'Money'] = (df3 * df2).sum(axis=1)
print df3
Audi BMW Money
2010-03-16 2000 4000 2300000000
2010-04-19 -2500 -4500 NaN
如果您只想要某些类型的汽车,请使用list
cars
:
cars = ['Audi', 'BMW']
print (df3[cars] * df2[cars]).sum(axis=1)
2010-03-16 2300000000
2010-04-19 -17826350000
dtype: int64
df3.loc[ df1['Buy'].str.contains('purchase'), 'Money'] = (df3[cars] * df2[cars]).sum(axis=1)
print df3
Audi BMW Money
2010-03-16 2000 4000 2300000000
2010-04-19 -2500 -4500 NaN