我正在尝试根据某些值将两个df乘以倍数。
data = {'a':10,'b':20,'c':30} .
df1:
id,tag,factor
1,a ,20
2,b ,22
3,c ,25
我的最终结果应如下所示:
id,factor,calc
1,20,200
2,22,440
3,24,750
我尝试过的步骤却给出了错误。
df ['calc'] = df ['factor'] * data.get(df ['tag'])
答案 0 :(得分:1)
以您的情况
df1['calc']=df1.factor*df1.tag.map(data)
或者做一些不同的事情
df['calc']=df.factor*np.vectorize(data.get)(df.tag)#pd.Series(data).get(df.tag).values
答案 1 :(得分:1)
df1['calc']=df1.factor*df1.tag.map(data)
df1.tag.map(data)
检查data
字典值,并用关联的键替换它们,从而为您提供一个可以乘以df1.factor
答案 2 :(得分:1)
您可以使用pandas.Series.map和pandas.DataFrame.drop
df['calc'] = df['factor'] * df['tag'].map(data)
df.drop('tag', axis=1, inplace=True)
输出:
id factor calc
0 1 20 200
1 2 22 440
2 3 25 750
答案 3 :(得分:1)
df['calc'] = df['factor'] * pd.Series([data[key] for key in df["tag"]])
输出
id factor calc
0 1 20 200
1 2 22 440
2 3 25 750
答案 4 :(得分:1)
使用列表理解
df1['calc'] = [x.factor * data[x.tag] for i, x in df1.iterrows()]
输出为
id tag factor calc
0 1 a 20 200
1 2 b 22 440
2 3 c 25 750