2024-10-01 05:00:01 发布
网友
我有一个数据帧,其中一些值在两个不同的列中
Ligand_hit,Ligand_miss M00001,M00005 M00002,M00001 M00003,M00007 M00004,M00003
我想创建一个新的列,所有的值都在“Ligand_miss”中,而不是在“Ligand_hit”中。预期输出如下:
我试着用熊猫.isin,但它只输出布尔值。有没有一种简单的方法可以得到想要的结果?在
由于set,您可以简单地使用vanilla python:
set
In [129]: df Out[129]: Ligand_hit Ligand_miss 0 M00001 M00005 1 M00002 M00001 2 M00003 M00007 3 M00004 M00003 In [130]: pd.concat([df, pd.Series(list(set(df['Ligand_miss'].values) - set(df['Ligand_hit'].values)))], ignore_index=True, axis=1) Out[130]: 0 1 2 0 M00001 M00005 M00007 1 M00002 M00001 M00005 2 M00003 M00007 NaN 3 M00004 M00003 NaN
一些解释:
set(df['Ligand_miss'].values)和set(df['Ligand_hit'].values)获得这两列中的唯一值。
set(df['Ligand_miss'].values)
set(df['Ligand_hit'].values)
set(...) - set(...)根据您的要求计算差异(“唯一”)。
set(...) - set(...)
^{}将结果合并到原始数据帧中。
熊猫的直接解决方案是:
df["Unique"] = df["Ligand_miss"][~df["Ligand_miss"].isin(df["Ligand_hit"])].drop_duplicates() Ligand_hit Ligand_miss Unique 0 M00001 M00005 M00005 1 M00002 M00001 NaN 2 M00003 M00007 M00007 3 M00004 M00003 NaN
这将为唯一值提供索引查找。在
基本的列表理解可以做到:
[i for i in df.Ligand_miss if i not in df.Ligand_hit]
您也可以为此使用集合:
由于
set
,您可以简单地使用vanilla python:一些解释:
set(df['Ligand_miss'].values)
和set(df['Ligand_hit'].values)
获得这两列中的唯一值。set(...) - set(...)
根据您的要求计算差异(“唯一”)。^{} 将结果合并到原始数据帧中。
熊猫的直接解决方案是:
这将为唯一值提供索引查找。在
基本的列表理解可以做到:
您也可以为此使用集合:
^{pr2}$相关问题 更多 >
编程相关推荐