python - 使用 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。因此,任何帮助将不胜感激。
解决方案
这应该这样做:
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")
希望你明白这个想法,适当地适应。
推荐阅读
- excel - 我如何将此代码转换为更短的代码?可能通过数组?
- javascript - 在 shell exec 期间无法使用 socket.io 发出当前服务器状态
- javascript - 如何从 ids 对象中删除项目
- python - 从 Postgresql 查询大数据集并进行处理
- javascript - JS 开发人员是否应该阅读 ECMAScript 规范?
- javascript - 更改嵌套对象的引用是否正在更改对根对象的引用?
- matplotlib-basemap - 如何使用 python 在伦敦地图上添加散点图
- windows - 在 .Appx 包安装结束时触发脚本 [UWP]
- android - 条纹结帐模式键盘涵盖小型设备上的输入和支付按钮
- python - 如何使用异步函数实现 ThreadPool?