我对python中的dataframe有一个问题。我的df看起来像这样:
type object name1 name2 name3 name4 name5 name6
PL Y NAM1 NAM2 NAM3 None None None
PL Z NamY NAMZ NAMI MAMJ NAMY NamT
PL Z NamW NAMG NAMO MAMR NAMV NamL
设置如下:
{'NAM1', 'MAMJ', .. }
我需要检查列名称1中是否有。。name6是第二个集合中的值,如果是,则必须将该值分配到新列中
我可以用numpy做到这一点,但在很多方面:
df['matched'] = np.where(df['name1'].isin(set1), df['name1'], '')
df['matched'] = np.where(df['name2'].isin(set1), df['name2'], df['matched'])
df['matched'] = np.where(df['name3'].isin(set1), df['name3'], df['matched'])
df['matched'] = np.where(df['name4'].isin(set1), df['name4'], df['matched'])
df['matched'] = np.where(df['name5'].isin(set1), df['name5'], df['matched'])
df['matched'] = np.where(df['name6'].isin(set1), df['name6'], df['matched'])
我怎样才能在一行中做到这一点?谢谢你的提示
如果不想替换集合1中的所有匹配项,可以使用以下代码:
您可以使用
map
和stack
分两步执行此操作,然后应用groupby
并获取最大索引位置值:然后映射到数据帧上:
相关问题 更多 >
编程相关推荐