将患者内的数据从单个观察结果写入多个文本文件

时间:2018-08-15 14:03:10

标签: python python-3.x pandas for-loop

我正在尝试在一个数据帧中写入各个列数据,其中每一行代表一个患者的数据。我有一个循环功能,该功能需要一个患者的“ id”来生成25个“ id” .txt文件-每个患者一个。我现在想遍历df,选取单个数据点(例如id = 6的患者的'fio2'值)并将其附加到该患者的.txt文件中。

这是我需要指导的问题:当我运行for循环(我尝试过多种变体)时,我得到的是所有患者的全部25个值附加到每个患者的文本文件中。

df /数据看起来像这样

The df/data look like this

我创建/写入文本文件的基本代码是:

for i in data['id']:
   filename = str(i) + '.txt'
   f = open(filename, 'a+')
   f.write('{}\n'.format('-----------------------------------------------'))
   f.write(datetime.datetime.now().strftime("%d.%m.%y"))
   f.write('{}\n'.format(''))
   f.write('{}\n'.format('Updated summary of patient data'))
   f.close()

我相信(可能是错误地)需要嵌套循环。我将如何修改此代码以完成需要做的事情?

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

import pandas as pd

d = {
    'id':range(10),
    'name': list('abcdefghij')
}
df = pd.DataFrame(d)
print(df.head(2))


def search_id_and_return_field(id,return_field_name):
    return df.loc[df.id==id][return_field_name].values[0]

required_ids = [1,5]

for id in required_ids:
    print(search_id_and_return_field(id=id,return_field_name='name'))
    break

在您的代码中,它可以放在类似这样的地方:

for i in required_ids:
    filename = str(i) + '.txt'
    f = open(filename, 'a+')
    f.write('{}\n'.format('-----------------------------------------------'))
    f.write(datetime.datetime.now().strftime("%d.%m.%y"))
    f.write('{}\n'.format(search_id_and_return_field(id=i,return_field_name="fio2"))) # Change your fieldname to be returned here
    f.write('{}\n'.format('Updated summary of patient data'))
    f.close()