我正在为我的论文处理大量数据(白血病癌症),因此我必须处理所有这些数据。条件就像我有一个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
最终输出:
我希望这清楚我正在尝试做的事情。
从2000行数据中查找每个患者列的最大值和最小值,然后使用此公式0.9 / Max-Min并将每个患者的所有数据导出到csv列中。
对不起,我刚开始使用Python。因此,任何帮助将不胜感激。
答案 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")
希望您有想法,适当调整。