gpt4 book ai didi

python - 使用 Pandas,如何对两列使用 if/then 逻辑来填充另一列?

转载 作者:太空宇宙 更新时间:2023-11-03 15:21:59 26 4
gpt4 key购买 nike

我有一个主电子表格,其中包含以下内容:

ClientID    Region    Number Value
61661 AMER 38150
1212 EMEA 2012
6543 AMER 38800
3115 LA 40121
3119 AMER 1000

我想要做的是添加一个新列来回答问题“对于区域列中包含 AMER 或 LA 且数值 > 31,000 的用户,请在新列中输入“高”一词。否则,如果地区是 AMER 或 LA,且少于 31,000,请输入“低”。因此,新电子表格应如下所示:

ClientID    Region    Number Value  New Column  
61661 AMER 38150 High
1212 EMEA 2012
6543 AMER 38800 High
3115 LA 40121 High
3119 AMER 1000 Low

我看了一下https://chrisalbon.com/python/pandas_selecting_rows_on_conditions.html为了了解如何做到这一点,我尝试了以下方法:

df = pd.ExcelFile('Check.xlsx')
Master = df.parse('Clients')
HighNumber= Master['Number Value'] > 31000
region=(Master['Region']=='AMER') | (Master['Region']=='LA')

Master['New Column']= Master[HighNumber & region]

但是我得到

ValueError: Wrong number of items passed 20, placement implies 1

我认为这与我不要求它循环遍历整个数据帧来给我值有关,但我不完全确定。任何指点都会很棒!

最佳答案

使用嵌套np.where

import numpy as np

isin = df.Region.isin(['AMER', 'LA'])
nv = df['Number Value'] > 31000

df['New Column'] = np.where(isin & nv, 'High', np.where(isin & ~nv, 'Low', ''))

print(df)

ClientID Region Number Value New Column
0 61661 AMER 38150 High
1 1212 EMEA 2012
2 6543 AMER 38800 High
3 3115 LA 40121 High
4 3119 AMER 1000 Low

我们可以通过利用底层 numpy 数组来提高性能

isin = df.Region.isin(['AMER', 'LA']).values
nv = df['Number Value'].values > 31000

df['New Column'] = np.where(isin & nv, 'High', np.where(isin & ~nv, 'Low', ''))

时间

enter image description here

回复评论

isin = df.Region.isin(['AMER', 'LA']).values
nv = df['Number Value'].values > 31000
em = df.Region.values == 'EMEA'

df['New Column'] = np.where(
isin & nv, 'High',
np.where(
isin & ~nv, 'Low',
np.where(em, 'See SS 2', '')
))

ClientID Region Number Value New Column
0 61661 AMER 38150 High
1 1212 EMEA 2012 See SS 2
2 6543 AMER 38800 High
3 3115 LA 40121 High
4 3119 AMER 1000 Low

关于python - 使用 Pandas,如何对两列使用 if/then 逻辑来填充另一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43458281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com