我正在尝试在一个数据帧中写入各个列数据,其中每一行代表一个患者的数据。我有一个循环功能,该功能需要一个患者的“ id”来生成25个“ id” .txt文件-每个患者一个。我现在想遍历df,选取单个数据点(例如id = 6的患者的'fio2'值)并将其附加到该患者的.txt文件中。
这是我需要指导的问题:当我运行for循环(我尝试过多种变体)时,我得到的是所有患者的全部25个值附加到每个患者的文本文件中。
df /数据看起来像这样
我创建/写入文本文件的基本代码是:
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()
我相信(可能是错误地)需要嵌套循环。我将如何修改此代码以完成需要做的事情?
答案 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()