将两个数据帧中的每个值相乘,并将每个答案添加到列
问题描述:
我试图将两个数据帧(df2和df3)中的每个值相乘,并将每个答案添加到其中一个数据帧中的一列。 df2由数据组成,其中列是类型,行是平均每天花费多少钱。 df3包含购买每辆车的数量。将两个数据帧中的每个值相乘,并将每个答案添加到列
我想每天乘以每列和每行,并将其添加到已在df3中创建的名为Money的列中。
我已经有一个for循环设置和df1是我可以告诉如果有人购买或出售汽车,并希望以某种方式合并一条线在那里循环通过df2的每一行,然后乘以df3并添加在列这笔钱的每一天:
for i, rows in df1.iterrows():
if rows.Buy == 'purchase':
df3.ix[rows.Day,rows.Type] = row.AmountOfCars
df3.ix[row.day, 'Money '] -= df3.ix[row.Day,rows.type] * df2???
df1(amount) Audi BMW Buy
2010-03-16 2000 4000 purchase
2010-04-19 2500 4500 sold
df2(prices) Audi BMW
2010-03-16 450000 350000
2010-04-19 6500000 350300
df3(totals) Audi BMW Money
2010-03-16 2000 4000 ?
2010-04-19 -2500 -4500 ?
答
我想你可以通过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
您可以添加'df1','df2'和'df3'的样本以及所需的输出吗?也许5-6排。 – jezrael
@jezrael好吧我添加了一些,并为金钱专栏我想说奥迪,200 * 450000加入我的钱列然后为宝马4000 * 35000添加到钱那一天 – rreg101
你想要总和这个总数'所以输出是'2300000000'?也许你认为2000 * 450000和4000 * 350000 – jezrael