Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 替换多个列中的整数值范围_Python_Pandas - Fatal编程技术网

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