使用Pandas从另一列中减去一列的值

时间:2018-07-13 18:18:40

标签: python pandas jupyter

我正在为我的论文处理大量数据(白血病癌症),因此我必须处理所有这些数据。条件就像我有一个excel文件,其中的列中有20位患者的名字,并且他们每个人都有2000行数据,现在我必须在每列中找到对每个患者有意义的最大值和最小值,然后从最大值中减去最小值,然后将其除以.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

最终输出:

Final Output

我希望这清楚我正在尝试做的事情。

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

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

1 个答案:

答案 0 :(得分:0)

这应该做到:

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")

希望您有想法,适当调整。