我有一个带有A和B列的dataframe(df):
A B
0 'a' 50
1 'b' 25
2 'a' 30
3 'c' 200
如果列A的值为'a',我想将列B的值乘以100,因此我的输出应为:
A B
0 'a' 5000
1 'b' 25
2 'a' 3000
3 'c' 200
任何人都可以提出一种更清洁的方式来做到这一点。谢谢。
答案 0 :(得分:4)
我认为没有必要测试子字符串,仅将DataFrame.loc
与比较值df.loc[df['A'] == "'a'", 'B'] *= 100
#same like
#df.loc[df['A'] == "'a'", 'B'] = df.loc[df['A'] == "'a'", 'B'] * 100
print (df)
A B
0 a 5000
1 b 25
2 a 3000
3 c 200
一起使用:
{{1}}
答案 1 :(得分:2)
请您尝试以下。
df['B']=np.where(df['A']=="'a'",df['B']*100,df['B'])
运行上述代码后,数据帧的值将如下所示。
A B
0 'a' 5000
1 'b' 25
2 'a' 3000
3 'c' 200
np.where是为了了解np.where
答案 2 :(得分:0)
df.loc[df["A"] == "a", "B"] *= 100
,或者如果需要其他功能,也可以使用where
函数。但是对于这种情况,就足够了。