如何使用 .loc 在 Pandas 中设置为其他列值 [英] How to use .loc to set as other column values in pandas

查看:59
本文介绍了如何使用 .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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆