将每个值乘以两个数据框并将每个答案添加到列中

时间:2016-02-14 05:46:28

标签: python numpy pandas dataframe

我试图将两个数据帧(df2和df3)中的每个值相乘,并将每个答案添加到其中一个数据帧中的列中。 df2由数据组成,其中列是类型,行是每天平均花费的成本。 df3包含购买每辆汽车的数量。

我希望每天将每列和每行相乘,然后将其添加到已在df3中创建的名为Money的列中。

我已经设置了for循环,df1是我可以判断是否有人购买或出售汽车的地方,我希望以某种方式在那里合并一行来循环遍历df2的每一行并将其乘以df3并添加金钱栏中的每一天的金额:

hadoop fs -ls /path/of/hdfs/location/ | head -10

1 个答案:

答案 0 :(得分:1)

我认为您可以按str.contains比较字符串,使用locsum

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