gpt4 book ai didi

python - 如何根据保存列名的字段从列中获取值?

转载 作者:太空宇宙 更新时间:2023-11-03 20:45:37 25 4
gpt4 key购买 nike

我的数据框有一个多索引。C1到C7最多有7列,但我在这里只显示了C1和C2。在 Correct_Category 列下,它保存要从中获取值的列的名称,并且还包含 NaN

index1  index2  C1      C2     Correct_Category   Matched
m1 a 10 0 C1 True
b 20 5 C2 True
c 10 10 C1 True
m2 d 1 15 C2 True
e 18 10 NaN False

我的目标是添加“Matched”列,该列根据 Correct_Category 中的列名称给出值。

index1  index2  C1      C2     Correct_Category   Matched  Number
m1 a 10 0 C1 True 10
b 20 5 C2 True 5
c 10 10 C1 True 10
m2 d 1 15 C2 True 15
e 18 10 NaN False 0

到目前为止,我使用 .loc、.where、.apply、.query 尝试过的所有操作都返回了不同的错误。

我当前的代码行:

df['Number']= df['Matched'].apply(lambda x: df[df['Correct_Category'] if x==True else 'No Category')

df[df['Correct_Category'] 是我想插入可以找到正确值的代码的地方,但这是不断返回不同错误的关键部分。

当前错误是“ValueError:无法使用包含 NA/NaN 值的向量进行索引”

最佳答案

使用DataFrame.lookup但仅适用于过滤后的行:

mask = df['Correct_Category'].isin(df.columns)
#alternative 1
#mask = df['Correct_Category'].notna()
#alternative 2
#mask = df['Matched']

df.loc[mask, 'Number'] = df.loc[mask].lookup(df.index[mask], df.loc[mask, 'Correct_Category'])
print (df)
C1 C2 Correct_Category Matched Number
index1 index2
m1 a 10 0 C1 True 10.0
b 20 5 C2 True 5.0
c 10 10 C1 True 10.0
m2 d 1 15 C2 True 15.0
e 18 10 NaN False NaN

关于python - 如何根据保存列名的字段从列中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56624496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com