gpt4 book ai didi

python - 替换 Pandas 多列中的一系列整数值

转载 作者:行者123 更新时间:2023-12-01 00:40:32 25 4
gpt4 key购买 nike

我有以下数据框:

Index ColA ColB ColC ColD 
0 1 4 13 ABC
1 12 1 24 ABC
2 36 18 1 ABC
3 41 45 1 ABC

现在我正在寻找一个简单的命令来转换 pandas df,使 ColA、ColB 和 ColC 的值类似于如下所示:

for each row:
if value in ColA <= 12 then 1
if value in ColA > 12 and <= 24 then 2
if value in ColA > 24 and <= 36 then 3
if value in ColA > 36 then 4

(其他列也相同)

所以结果看起来像这样:

Index ColA ColB ColC ColD 
0 1 1 2 ABC
1 1 1 2 ABC
2 3 2 1 ABC
3 4 4 1 ABC

有没有简单的方法可以实现这一点? :-)

最诚挚的问候,安德烈

最佳答案

可以使用pandas提供的函数来解决这个问题。

基本上,您可以迭代所有列,并使用 pandas 数据框提供的函数将某个范围内的列的所有值更改为新值。

import pandas as pd
import numpy as np

df = pd.DataFrame()

df["ColA"] = [1, 12, 32, 24]
df["ColB"] = [23, 11, 6, 45]
df["ColC"] = [10, 25, 3, 23]

print(df)

输出:

   ColA  ColB  ColC
0 1 23 10
1 12 11 25
2 32 6 3
3 24 33 23

现在,我们将使用代码 df['ColA']. Between(0,12) 查找具有给定范围值的列的所有索引,并为这些索引分配新值此列的索引,使用代码 df.loc[df['ColA']. Between(0,12), 'ColA'] = 1

这是为 ColA 完成的,现在为了对数据帧的所有列执行此操作,我们将使用循环,这可以使用以下代码来完成。

for col in df.columns:
df.loc[df[col].between(0,12), col] = 1
df.loc[df[col].between(13,24), col] = 2
df.loc[df[col].between(25,36), col] = 3

print(df)

输出:

   ColA  ColB  ColC
0 1 2 1
1 1 1 3
2 1 1 1
3 1 3 2

关于python - 替换 Pandas 多列中的一系列整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57376325/

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