如何使用 .loc 在 Pandas 中设置为其他列值 [英] How to use .loc to set as other column values in pandas
本文介绍了如何使用 .loc 在 Pandas 中设置为其他列值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
例如,我有一个数据框:
For example, I have a dataframe:
cond value1 value2
0 True 1 1
1 False 3 5
2 True 34 2
3 True 23 23
4 False 4 2
我希望在 cond=True
时将 value1 替换为 value2*2
.所以我想要的结果是:
I hope to replace value1 to value2*2
when cond=True
. So I want the result is:
cond value1 value2
0 True 2 1
1 False 3 5
2 True 4 2
3 True 46 23
4 False 4 2
我可以通过以下代码实现:
I can achieve it by follow code:
def convert(x):
if x.cond:
x.value1= x.value2*2
return x
data = data.apply(lambda x: convert(x),axis=1)
我认为当数据很大时它很慢.我用.loc
试了一下,但是不知道怎么设置值.
I think it is so slow when data is big. I try it by .loc
, but I don't know how to set value.
如何通过.loc
或者其他简单的方式实现?提前致谢.
How can I achieve it by .loc
or other simple ways? Thanks in advance.
推荐答案
创建布尔掩码和多个仅过滤的行:
Create boolean mask and multiple only filtered rows:
mask = df.cond
df.loc[mask, 'value1'] = df.loc[mask, 'value2'] * 2
print (df)
cond value1 value2
0 True 2 1
1 False 3 5
2 True 4 2
3 True 46 23
4 False 4 2
这篇关于如何使用 .loc 在 Pandas 中设置为其他列值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文