Python 根据两列或多列的条件更改熊猫中的列值
我想根据两列中的条件替换列“k”,并在github上找到了此代码段 这是代码片段: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) #
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