Python 根据两列或多列的条件更改熊猫中的列值

Python 根据两列或多列的条件更改熊猫中的列值,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我想根据两列中的条件替换列“k”,并在github上找到了此代码段 这是代码片段: df.loc[(df['column1'] == some_value) & (df['column2'] == some_other_value), ['column_to_change']] = new_value 这是我使用的代码: def merged_algo_A(cluster_array): rows,labels = readCluster(cluster_array) #

我想根据两列中的条件替换列“k”,并在github上找到了此代码段

这是代码片段:

df.loc[(df['column1'] == some_value) & (df['column2'] == some_other_value), ['column_to_change']] = new_value
这是我使用的代码:

def merged_algo_A(cluster_array): 

    rows,labels = readCluster(cluster_array) # reading the test data

    xtest = pd.DataFrame(np.array(rows).reshape(len(rows),11), columns = list("abcdefghijk"))
    ytest = pd.DataFrame(np.array(labels).reshape(len(labels),1),columns = list("l"))

    #print(xtrain['c'])
    xtest['SportYes'] = np.where(xtest['c']<=16897, '200', '400')
    xtest['stateYes'] = np.where(xtest['k']<=62, '200', '400')
    xtest['durYes'] = np.where(xtest['a']<=0.0585, '200', '400')

    xtest.loc[(xtest['SportYes'] == 200) & (xtest['stateYes'] == 200), 'k'] = 3
    print(xtest)
def合并算法(集群阵列):
行,标签=readCluster(cluster_数组)#读取测试数据
xtest=pd.DataFrame(np.array(rows).重塑(len(rows),11),columns=list(“abcdefghijk”))
ytest=pd.DataFrame(np.array(labels).重塑(len(labels),1),columns=list(“l”))
#打印(xtrain['c'])

xtest['SportYes']=np.where(xtest['c']您需要
np中的
'200'
'400'
。其中
更改为
200
400
整数:

xtest['SportYes'] = np.where(xtest['c']<=16897, 200, 400)
xtest['stateYes'] = np.where(xtest['k']<=62, 200, 400)
xtest['durYes'] = np.where(xtest['a']<=0.0585, 200, 400)

xtest.loc[(xtest['SportYes'] == 200) & (xtest['stateYes'] == 200), 'k'] = 3
print(xtest)

此问题已解决,以下是解决此问题的代码:

def merged_algo_A(cluster_array): 

    rows,labels = readCluster(cluster_array) # reading the test data

    xtest = pd.DataFrame(np.array(rows).reshape(len(rows),11), columns = list("abcdefghijk"))
    ytest = pd.DataFrame(np.array(labels).reshape(len(labels),1),columns = list("l"))


    xtest['SportYes'] = np.where(xtest['c']<=16897, 'yes', 'no')
    xtest['stateYes'] = np.where(xtest['f']<=62, 'yes', 'no')


    xtest['labels1'] = xtest['j']
    xtest['reallabels'] = ytest

    xtest.loc[(xtest['SportYes'] == 'yes') , ['labels1']] = 3
    xtest.loc[(xtest['SportYes'] == 'no')  , ['labels1']] = 2

    list1 = list(map(int,xtest['labels1']))

    final_preds = list1
    return final_preds 
def合并算法(集群阵列):
行,标签=readCluster(cluster_数组)#读取测试数据
xtest=pd.DataFrame(np.array(rows).重塑(len(rows),11),columns=list(“abcdefghijk”))
ytest=pd.DataFrame(np.array(labels).重塑(len(labels),1),columns=list(“l”))

xtest['SportYes']=np.其中(xtest['c']您尝试过
xtest.loc[(xtest['SportYes']==200)和(xtest['stateYes']==200),'k']=3
?是的,我尝试过,它不起作用。再次查看jpp代码,没有[]列,请提供一些数据。有关详细信息,请参阅。应该有问题列是非数字的,所以需要
xtest.loc[(xtest>)['SportYes']='200')&(xtest['stateYes']='200'),'k']=3
,但是没有难以知道的数据。但是通过
print(df.dtypes)
帮助检查它,这不起作用。我甚至检查了数据实例,以确保满足这些条件的值确实存在。我很想解决它:(@Ara-什么意思它不起作用?
k
列中每行没有3个值,
SportYes=200
stateYes=200
def merged_algo_A(cluster_array): 

    rows,labels = readCluster(cluster_array) # reading the test data

    xtest = pd.DataFrame(np.array(rows).reshape(len(rows),11), columns = list("abcdefghijk"))
    ytest = pd.DataFrame(np.array(labels).reshape(len(labels),1),columns = list("l"))


    xtest['SportYes'] = np.where(xtest['c']<=16897, 'yes', 'no')
    xtest['stateYes'] = np.where(xtest['f']<=62, 'yes', 'no')


    xtest['labels1'] = xtest['j']
    xtest['reallabels'] = ytest

    xtest.loc[(xtest['SportYes'] == 'yes') , ['labels1']] = 3
    xtest.loc[(xtest['SportYes'] == 'no')  , ['labels1']] = 2

    list1 = list(map(int,xtest['labels1']))

    final_preds = list1
    return final_preds