【问题标题】:Comparing multiple columns (strings) with Python用 Python 比较多列(字符串)
【发布时间】:2020-07-20 19:44:29
【问题描述】:
#Create a datafame with dict
#colNames = ['GeneA', 'GeneB']
genes_new = pandas.DataFrame([
    dict(GeneA="TP53", GeneB="PHA2", GeneC="MYC", GeneD="ACTL7A" ),
    dict(GeneA="BRCA1", GeneB="EPS15", GeneC="ADAMTS13", GeneD="ALAD" ),
    dict(GeneA="IFT88", GeneB="BRCA2", GeneC="ADAM", GeneD="PHA2" ),
    dict(GeneA="IFT80", GeneB="MDM2", GeneC="ACTL7A", GeneD="ALS4" ),
    dict(GeneA="BBS1", GeneB="CDK1", GeneC="ASS", GeneD="ANGPTL2" ),
    dict(GeneA="DPH5", GeneB="BRCA1", GeneC="AIF1L", GeneD="ENO1" ),
    dict(GeneA="ENO1", GeneB="BBS1", GeneC="EPS15", GeneD="IFT80" ),
    dict(GeneA="EVI5", GeneB="ENO1", GeneC="IFT80", GeneD="BRCA1" ), 
])
  
genes_new

这是我生成的文件,我想将 GeneA 中的项目与其他列进行比较,并找出差异和相似之处。

def Dif_GeneA(x):
    if x['GeneA'] >= x['GeneB']:
        return x['GeneA']
    else:
      ''
genes_new['Dif_GeneA'] = genes_new.apply(Dif_GeneA, axis=1)
genes_new

我可以将 GeneA 列与 GeneB 进行比较并找出差异,但找不到同时将 GeneA 与所有其他列进行比较的简单方法。

Comparing multiple columns using python? 下面的代码没有解决我的问题。

df['New Column'] = '0'
df.loc[(df['date1'] <= df['date2']) & (df['date2'] <=  df['date3']), 'New Column'] = '1'

我是 Python 新手,非常感谢任何帮助。万事如意

【问题讨论】:

  • 这绝对是可能的,尽管我不完全确定检查 &gt;= 的 2 个字符串如何告诉你任何关于“异同”的信息,即 'football' &gt;= '1' 是真的......

标签: python pandas compare multiple-columns


【解决方案1】:

一种方法是创建一个通用列函数并在 for 循环中运行它:

def Dif_GeneA(df, col):
    return genes_new['GeneA'].where(df['GeneA'] >= df[col])

for col in genes_new.columns:
    if col!='GeneA':
        genes_new[f'Dif_GeneA_{col}'] = Dif_GeneA(genes_new, col)

【讨论】:

  • 你真好。非常感谢:)我会试试的:)
猜你喜欢
  • 2014-06-03
  • 2016-08-19
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 2013-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多