根据DataFrame Python中的条件更改特定列的值
我不知道如何为特定的列集自动化它 它将进入特定列,检查值。如果一个值等于或大于10,它将替换为100,如果小于该值,它将为0。但它会对所有列执行此操作,而不是每次指定列的名称根据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
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-给我一点时间。