我有以下数据框
Name Rank1 Rank2 Rank3 Rank4 Rank5
Name1 Title1 Title3 Title7 Title2 Title6
Name2 Title3 Title2 Title6 Title5 Title4
Name3 Title2 Title5 Title3 Title6 Title4
Name4 Title4 Title6 Title1 Title5 Title2
我想让数据框看起来像这样
Name Title1 Title2 Title3 Title4 Title5 Title6 Title7
Name1 1 4 2 10 10 5 3
Name2 10 2 1 4 4 3 10
Name3 10 1 3 5 2 4 10
Name4 3 5 10 1 4 2 10
关于如何做到这一点有什么建议吗?
使用以下代码。
import pandas as pd
import numpy as np
def find_rank(row, v):
rank = np.where(row == v)[0]
if len(rank) == 0:
return 10
else:
return rank[0]
for v in ['Title1', 'Title2', 'Title3', 'Title4', 'Title5', 'Title6']:
df[v] = df.apply(find_rank, v = v, axis = 1)
df = df.drop(['Rank1', 'Rank2', 'Rank3', 'Rank4', 'Rank5'], axis = 1)
此代码查找该值并返回其每行的索引。
如果一行中没有值,则返回 10。