首页 > 解决方案 > 使用 Pandas 从另一列中减去一列的值

问题描述

我正在为我的论文处理大量数据(白血病),我必须处理所有这些数据。条件就像我有一个 excel 文件,其中列中有 20 个患者姓名,每个人都有 2000 行数据,现在我必须找到每个患者每列含义中的最大值和最小值,然后从最大值中减去最小值,然后除以 0.5 并导出每个患者的值,我使用的是 Pandas。

我能够找到最大值和最小值使用

data.max(), data.min()

用于导出我使用的值 -

data.min().to_csv('min.csv') and data.max().to_csv('max.csv') 

这是两个单独的文件。

现在我需要做的是确保只有一个文件有两列并排显示最大值和最小值,第三列中减法后的值和最后除法后的最终值。

样本数据:

Patient No  Patient1    Patient2    Patient3    Patient4
gene data1  5614.705569 6446.177102 5756.830799 5498.327075
gene data2  592.8588927 401.8615001 459.7095671 619.2129817
gene data3  246.4022014 238.535468  261.7679828 207.4747361
gene data4  1273.25497  1318.80054  1338.271733 1221.564705
gene data5  51.0906811  37.07419033 26.28092875 37.12742504
gene data6  756.0119839 867.248239  956.754366  864.2708979
gene data7  168.4100068 153.3151275 136.5111169 205.8874617
gene data8  183.0011027 277.4930516 191.5097325 140.7178783
gene data9  1334.627713 1480.547871 688.3688018 3269.536931

最终输出:

最终输出

我希望这清楚我想要做什么。

从 2000 行数据中找到每个患者列的最大值和最小值,然后使用此公式 0.9/Max-Min 并将每个患者的所有数据导出到列中的 csv 中。

对不起,我刚开始使用 Python。因此,任何帮助将不胜感激。

标签: pythonpandasjupyter

解决方案


这应该这样做:

import pandas as pd

d = {'patient1': [1,2,3,4,5], 'patient2': [3,5,7,8,11], 'patient3': [5,9,13,17,21]}
df = pd.DataFrame(data=d)
min_df = df.apply(min,axis=0)
max_df = df.apply(max,axis=0)
sub_df = max_df - min_df
div_df = sub_df/0.5
out_df = pd.concat([min_df, max_df,sub_df,div_df], axis=1)
out_df.index.name = 'Patient'
out_df.columns = ['min','max','div','sub']
out_df.to_csv("out_all.csv")
out_df.T.to_csv("out_all_patients_as_columns.csv")

希望你明白这个想法,适当地适应。


推荐阅读