繁体   English   中英

Pandas groupby 列是相同还是不同

[英]Pandas groupby whether columns are the same or different

我想分析存储在 pandas dataframe 中的成对比较(基因组):

Genome1 Genome2 SNPs Study1 Study2 Town1 Town2
      A       B    3     s1     s2    t1    t2
      A       C    6     s1     s3    t1    t2
      A       D    7     s1     s3    t1    t2
      A       E    8     s1     s4    t1    t3
      A       F    3     s1     s4    t1    t3

当研究 1 与研究 2 相同时,当它们不同时,与当城镇 1 与城镇 2 相同时,当它们不同时,使用groupby我将如何获得 SNP?

我想这就是你想要的。 这里我们构造一个例子:

import pandas as pd

text = """Genome1 Genome2 SNPs Study1 Study2 Town1 Town2
      A       B    3     s2     s2    t1    t1
      A       C    6     s1     s3    t1    t1
      A       D    7     s1     s3    t1    t2
      A       E    8     s1     s4    t1    t3
      A       F    3     s1     s4    t1    t3
      A       F    2     s4     s4    t1    t3
      A       G    5     s1     s1    t1    t3"""

text2 = [line.split() for line in text.split('\n')]
df = pd.DataFrame(text2[1:], columns=text2[0])

给定这样一个 dataframe,我们根据研究是否相同以及城镇是否相同进行分组,然后输出每个相同研究/相同城镇组合的所有 SNP 列表:

# Creating boolean columns for grouping data
df['same_study'] = df['Study1'] == df['Study2']
df['same_town'] = df['Town1'] == df['Town2']

# Creating lists of values in each group
snps_df = df.groupby(['same_study', 'same_town'])['SNPs'].apply(lambda group_series: group_series.tolist()).reset_index()
>>> print(snps_df)

   same_study  same_town       SNPs
0       False      False  [7, 8, 3]
1       False       True        [6]
2        True      False     [2, 5]
3        True       True        [3]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM