gpt4 book ai didi

python - 根据多个条件替换 Pandas 数据框中的值

转载 作者:太空宇宙 更新时间:2023-11-04 08:28:15 24 4
gpt4 key购买 nike

我有一个基于此示例代码的相当简单的问题:

x1 = 10*np.random.randn(10,3)
df1 = pd.DataFrame(x1)

我正在寻找从 df1 派生的单个 DataFrame,其中正值替换为 "up",负值替换为 "down"0 值(如果有)替换为 “零”。我尝试使用 .where().mask() 方法,但无法获得所需的结果。

我看到其他帖子一次根据多个条件进行过滤,但他们没有显示如何根据不同条件替换值。

最佳答案

对于多个条件,即。 (df['employrate'] <=55) & (df['employrate'] > 50)

使用这个:

df['employrate'] = np.where(
(df['employrate'] <=55) & (df['employrate'] > 50) , 11, df['employrate']
)

或者你也可以这样做,

gm.loc[(gm['employrate'] <55) & (gm['employrate'] > 50),'employrate']=11

这里的非正式语法可以是:

<dataset>.loc[<filter1> & (<filter2>),'<variable>']='<value>'

out[108]:
country employrate alcconsumption
0 Afghanistan 55.700001 .03
1 Albania 11.000000 7.29
2 Algeria 11.000000 .69
3 Andorra nan 10.17
4 Angola 75.699997 5.57

因此我们在这里使用的语法是:

 df['<column_name>'] = np.where((<filter 1> ) & (<filter 2>) , <new value>, df['column_name'])

对于单一条件,即。 ( 'employrate'] > 70 )

       country        employrate alcconsumption
0 Afghanistan 55.7000007629394 .03
1 Albania 51.4000015258789 7.29
2 Algeria 50.5 .69
3 Andorra 10.17
4 Angola 75.6999969482422 5.57

使用这个:

df.loc[df['employrate'] > 70, 'employrate'] = 7

       country  employrate alcconsumption
0 Afghanistan 55.700001 .03
1 Albania 51.400002 7.29
2 Algeria 50.500000 .69
3 Andorra nan 10.17
4 Angola 7.000000 5.57

因此这里的语法是:

df.loc[<mask>(here mask is generating the labels to index) , <optional column(s)> ]

关于python - 根据多个条件替换 Pandas 数据框中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55081194/

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