对于一个具体的人,知道其性别、有无糖尿病,血压,年龄,胆固醇等,如何在pandas里索引出他的具体值?
至少有6个变量,十分的坑爹
如图,我已经把表格已经被录到Excel中。对于一个具体的人,根据他的性别、有无糖尿病,血压,年龄,胆固醇,是否吸烟来取出对应的风险值。
应该是多重索引。
对于一个具体的人,知道其性别、有无糖尿病,血压,年龄,胆固醇等,如何在pandas里索引出他的具体值?
至少有6个变量,十分的坑爹
如图,我已经把表格已经被录到Excel中。对于一个具体的人,根据他的性别、有无糖尿病,血压,年龄,胆固醇,是否吸烟来取出对应的风险值。
应该是多重索引。
终于弄好了
import pandas as pd
import numpy as np
df=open('C:/Users/xxxxxxx/风险评估表.xlsx','rb') #'rb'为了避免打不开
df=pd.read_excel(df)
#print(df.head())
dt=open('C:/Users/xxxxxxx/new_file.csv','rb') #为了避免打开乱码
dt=pd.read_csv(dt)
prs=lambda x:120 if x<140 else (140 if x<160 else (160 if x<180 else 180))
age=lambda x:40 if x<50 else (50 if x<60 else (60 if x<70 else 70))
dgc=lambda x:4 if x<5 else (5 if x<6 else (6 if x<7 else (7 if x<8 else 8)))
ndt = pd.DataFrame() #创建一个空的dataframe
for i in range(1,len(dt)): #循环数据框次
fx=df[(df['性别']==dt.iloc[i,:][1])&(df['年龄组']==age(dt.iloc[i,:][2]))&(df['吸烟']==dt.iloc[i,:][9])&(df['糖尿病']==dt.iloc[i,:][10])&(df['胆固醇']==dgc(dt.iloc[i,:][17]))]
rsk=fx[prs(dt.iloc[i,:][22])]
v=dt.iloc[i,:].copy() #直接读取一列为数据框架的镜像,为了克服镜像不能添加新列的错误添加.copy()
for x in rsk:
v['风险']=x
ndt=ndt.append(v) #切记重新赋值,否则添加不成功
print('风险评估任务已完成:%.2f %%' %(i/len(dt)*100))
ndt.to_csv('file.csv',encoding='utf_8_sig') #为了避免保存新文件乱码
4 回答4.4k 阅读✓ 已解决
1 回答3.1k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.9k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
我给你举个例子吧, 假设你已经将数据从excel导入且为DataFrame对象
可以使用DataFrame.loc对象来解决(要注意和DataFrame.iloc对象的区别)