我有两个非常大的 Pandas DataFrame,想用它们在快速求和运算中相互引导。两个框架看起来像这样:
第 1 帧:
SampleName Gene1 Gene2 Gene3
Sample1 1 2 3
Sample2 4 5 6
Sample3 7 8 9
(实际上,Frame1 大约有 1,000 行 x ~300,000 列)
第 2 帧:
FeatureName GeneID
Feature1 Gene1
Feature1 Gene3
Feature2 Gene1
Feature2 Gene2
Feature2 Gene3
(实际上,Frame2
约为 350,000 行 x 2 列,具有约 17,000 个独特的特征)
我想通过 Frame2 的基因组对 Frame1 的列求和。例如,上述两个帧的输出将是:
SampleName Feature1 Feature2
Sample1 4 6
Sample2 10 15
Sample3 16 24
(实际上,输出将是 ~1,000 行 x 17,000 列)
有没有什么方法可以用最少的内存使用来做到这一点?
最佳答案
如果您想减少内存使用,我认为您最好的选择是迭代第一个 DataFrame,因为它只有 1k 行。
dfs = []
frame1 = frame1.set_index('SampleName')
for idx, row in frame1.iterrows():
dfs.append(frame2.join(row, on='GeneID').groupby('FeatureName').sum())
pd.concat(dfs, axis=1).T
产量
FeatureName Feature1 Feature2
Sample1 4 6
Sample2 10 15
Sample3 16 24
关于python - 使用两个 DataFrame 的 Pandas groupby 总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39199343/