Pandas / Python:根据另一列中的值设置一列的值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Pandas / Python:根据另一列中的值设置一列的值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1382字,纯文字阅读大概需要2分钟。
内容图文
![Pandas / Python:根据另一列中的值设置一列的值](/upload/InfoBanner/zyjiaocheng/702/0bf164e7c25548f7b08d8b949f81d84b.jpg)
我需要根据Pandas数据帧中另一列的值设置一列的值.这是逻辑:
if df['c1'] == 'Value':
df['c2'] = 10
else:
df['c2'] = df['c3']
我无法做到这一点,我只想创建一个具有新值的列(或更改现有列的值:任何一个适合我).
如果我尝试运行上面的代码或者如果我将其作为函数编写并使用apply方法,我会得到以下内容:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
解决方法:
一种方法是使用.loc索引.
例
在没有示例数据帧的情况下,我会在这里制作一个:
import numpy as np
import pandas as pd
df = pd.DataFrame({'c1': list('abcdefg')})
df.loc[5, 'c1'] = 'Value'
>>> df
c1
0 a
1 b
2 c
3 d
4 e
5 Value
6 g
假设你想要创建一个新的列c2,相当于c1,除非c1是Value,在这种情况下,你想将它分配给10:
首先,您可以创建一个新列c2,并使用以下两行之一将它设置为等效为c1(它们基本上执行相同的操作):
df = df.assign(c2 = df['c1'])
# OR:
df['c2'] = df['c1']
然后,使用.loc找到c1等于’Value’的所有索引,并在c2处为这些索引分配所需的值:
df.loc[df['c1'] == 'Value', 'c2'] = 10
你最终得到了这个:
>>> df
c1 c2
0 a a
1 b b
2 c c
3 d d
4 e e
5 Value 10
6 g g
如果,正如您在问题中所建议的那样,您有时可能只想替换已有列中的值,而不是创建新列,那么只需跳过列创建,然后执行以下操作:
df['c1'].loc[df['c1'] == 'Value'] = 10
# or:
df.loc[df['c1'] == 'Value', 'c1'] = 10
给你:
>>> df
c1
0 a
1 b
2 c
3 d
4 e
5 10
6 g
内容总结
以上是互联网集市为您收集整理的Pandas / Python:根据另一列中的值设置一列的值全部内容,希望文章能够帮你解决Pandas / Python:根据另一列中的值设置一列的值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。