[英]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.