Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.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
根据DataFrame Python中的条件更改特定列的值_Python_Pandas - Fatal编程技术网

根据DataFrame Python中的条件更改特定列的值

根据DataFrame Python中的条件更改特定列的值,python,pandas,Python,Pandas,我不知道如何为特定的列集自动化它 它将进入特定列,检查值。如果一个值等于或大于10,它将替换为100,如果小于该值,它将为0。但它会对所有列执行此操作,而不是每次指定列的名称 import numpy as np import pandas as pd from sklearn.datasets import make_classification X, y = make_classification(n_samples=1000, n_f

我不知道如何为特定的列集自动化它

它将进入特定列,检查值。如果一个值等于或大于10,它将替换为100,如果小于该值,它将为0。但它会对所有列执行此操作,而不是每次指定列的名称

import numpy as np
import pandas as pd
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=1000,
                           n_features=6,
                           n_informative=3,
                           n_classes=2,
                           random_state=0,
                           scale = 10,
                           shuffle=False)

# Creating a dataFrame
df = pd.DataFrame({'car':X[:,0],
                                  'ball':X[:,1],
                                  'Feature 3': 5,
                                  'Feature 4':X[:,3],
                                  'Feature 5':X[:,4],
                                  'Feature 6':X[:,5],
                                  'Class':y})


df.loc[df['Feature 6'] > 10, 'Feature 6'] = 100
将使用以下行提取列集

spike_cols = [col for col in df.columns if "tu" in str(col)]
因此,基本上更改列名中任何位置包含tu的列的值,我认为您需要使用
DataFrame
构造函数,因为它返回一个2d numpy数组:

df = pd.DataFrame(np.where(df >= 10, 100, 0), columns=df.columns, index=df.index)
感谢@Wen通过
100
True
s是类似
1
False
s的过程,如
0

df = df.ge(10).mul(100)
编辑:如果希望仅对某些列应用解决方案:

df[spike_cols]  = pd.DataFrame(np.where(df[spike_cols] >= 10, 100, 0),
                               columns=spike_cols, index=df.index)

df[spike_cols] = df[spike_cols].ge(10).mul(100)

为什么不简单地尝试一下
df[df>=10]=100
df[df]你肯定是其中之一。我怎样才能稍微编辑这段代码,而不是更改所有列的值,而是更改与名称中任何特定名称相对应的列的值。例如,如果列包含“tu”,然后应用您的代码。提取列名的一种方法是spike\u cols=[cols for col in df.columns if“tu”in str(col)]@Victor-我想需要
df[spike\u cols]=pd.DataFrame(np.where(df[spike\u cols]>=10100,0),columns=spike\u cols,index=df.index)
@Victor-给我一点时间。