我有一个如下所示的数据帧:
Q5 | Q10 | Q41 | item
a | b | c | Q5
d | e | f | Q10
g | h | i | Q571
j | k | l | Q23340
m | n | o | Q41
h | p | s | Q10
其中Q5,Q10,Q41,item是数据帧的列名。我想再添加一个列“name”,它将具有列的值,其中列“item”的值与列名匹配。所以我希望它看起来像下面这样:
^{pr2}$这里的问题是,项目多于列。因此,不是列项中的所有值都作为导致keyError的列存在。我试着做如下:
df['col_exist'] = [(col in df.columns) for col in df.item]
df['name'] = np.where(df['col_exist']==True, df[df.item], np.nan)
我得到的错误是:
KeyError: "['Q571', 'Q23340'] not in index"
我也试过用数据框应用具体如下:
df['name'] = np.where(df['col_exist']==True, df.apply(lambda x: x[x.item], axis=1), np.nan)
但我得到的错误如下:
KeyError: ('Q571', 'occurred at index 2')
我不知道为什么它试图访问不存在的列,尽管在那里放置了col_exit check。在
有人能帮我解决这个问题吗?在
您可以根据列筛选项目列,然后使用查找,即
或者
^{pr2}$输出:
删除新列
df = df.drop('new',1)
要使您的方法有效而不是
df[df.item]
,请使用df['item']
相关问题 更多 >
编程相关推荐