Python 替换多个列中的整数值范围
我有以下数据帧:Python 替换多个列中的整数值范围,python,pandas,Python,Pandas,我有以下数据帧: 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 现在,我正在搜索一个简单的命令来转换熊猫df,使ColA、ColB和ColC的值如下所示: for each row: if value in ColA <= 12 then 1 if value i
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
现在,我正在搜索一个简单的命令来转换熊猫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
有没有一个简单的方法来实现这一点?:-)
致以最良好的祝愿,
André通用解决方案,包括:
您可以使用pandas提供的功能来解决此问题 基本上,您可以使用dataframe提供的函数迭代所有列,并将位于新值范围内的列的所有值更改为新值
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
ColA ColB ColC
0 1 2 1
1 1 1 3
2 1 1 1
3 1 3 2
现在,我们将使用代码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 23 10
1 12 11 25
2 32 6 3
3 24 33 23
ColA ColB ColC
0 1 2 1
1 1 1 3
2 1 1 1
3 1 3 2
啊,好吧,我不知道“中间”的功能。非常感谢。
ColA ColB ColC
0 1 2 1
1 1 1 3
2 1 1 1
3 1 3 2