首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ELIF填充DataFrame列并比较运算符获取"ValueError“

使用ELIF填充DataFrame列并比较运算符获取"ValueError“
EN

Stack Overflow用户
提问于 2019-07-25 18:33:06
回答 1查看 64关注 0票数 0

我有一个这样的DataFrame:

代码语言:javascript
复制
import pandas as pd
df = pd.DataFrame(columns=list('ABC'))
df[A] = [22, 43, 64, 86]

另外,我希望使用比较运算符填充其他两列。以下是我所拥有的:

代码语言:javascript
复制
if df['A'] <= 25:
   df['B'] = 'k'
   df['C'] = 'k'
elif df['A'] > 25 & df['A'] <= 50:
   df['B'] = 'b'
   df['C'] = 'none'
elif df['A'] > 50
   df['B'] = 'g'
   df['C'] = 'r'

但是,我很难在DataFrame上使用操作符。我得到了一个错误,比如"ValueError:系列的真值不明确“。有人知道解决办法吗?

编辑:考虑到将来非常大的elif的潜力,我想继续使用DataFrames。每次使用新的比较运算符时,我都试图避免在DataFrame中搜索。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-25 18:42:47

方法1

pd.cut的完美用例

代码语言:javascript
复制
df['B'] = pd.cut(df['A'], [0,25,50,np.inf], labels=['k', 'b', 'g'])
df['C'] = pd.cut(df['A'], [0,25,50,np.inf], labels=['k', 'None', 'g'])

输出

代码语言:javascript
复制
    A  B     C
0  22  k     k
1  43  b  None
2  64  g     g
3  86  g     g

方法2

由于我们有一组条件,这也是np.select的一个很好的用例。

代码语言:javascript
复制
conditions = [
    df['A'] <= 25,
    (df['A'] > 25) & (df['A'] <= 50),
    df['A'] > 50
]

choices1 = ['k', 'b', 'g']
choices2 = ['k', 'None', 'g']

df['B'] = np.select(conditions, choices1, default='unknown')
df['C'] = np.select(conditions, choices2, default='unknown')

输出

代码语言:javascript
复制
    A  B     C
0  22  k     k
1  43  b  None
2  64  g     g
3  86  g     g
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57208232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档