假设有一个简单的数据框,如下所示:
data = {'grades Feb':[10,20,30,40,50], 'grades
Jan':[5,10,15,20,25],'grades
April':[1,2,3,4,5],'months':['Feb','April','Jan','Feb','April']}
df=pd.DataFrame(data) df.lookup(df.index,df.months)
我希望代码的输出像这样
array([10, 2, 15, 40, 5], dtype=int64)
在不更改列名以使其等同于“ months”列中的名称或更改“ months”列名称的情况下, 我只想提取存在名称的列中的行值我的“月份”列值的一部分。 如何使用常规耗时或数据框函数来完成此操作。 PS:这是一个简单的示例,用于说明我的问题比不能简单地更改列名的问题更大。
答案 0 :(得分:3)
使用lookup
并重新创建列的键
df.lookup(df.index,'grades '+ df.months)
Out[1070]: array([10, 2, 15, 40, 5], dtype=int64)
答案 1 :(得分:2)
使用df.lookup
执行此操作:
v = df.filter(like='grades').rename(columns=lambda x: x.split()[1])
print(v)
Feb Jan April
0 10 5 1
1 20 10 2
2 30 15 3
3 40 20 4
4 50 25 5
grades = v.lookup(df.index, df.months)
print(grades)
array([10, 2, 15, 40, 5])