【发布时间】:2019-10-26 14:43:02
【问题描述】:
我有 3 个不同的数据帧,可以使用下面给出的代码生成
data_file= pd.DataFrame({'person_id':[1,2,3],'gender': ['Male','Female','Not disclosed'],'ethnicity': ['Chinese','Indian','European'],'Marital_status': ['Single','Married','Widowed'],'Smoke_status':['Yes','No','No']})
map_file= pd.DataFrame({'gender': ['1.Male','2. Female','3. Not disclosed'],'ethnicity': ['1.Chinese','2. Indian','3.European'],
'Marital_status':['1.Single','2. Married','3 Widowed'],'Smoke_status':['1. Yes','2. No',np.nan]})
hash_file = pd.DataFrame({'keys':['gender','ethnicity','Marital_status','Smoke_status','Yes','No','Male','Female','Single','Married','Widowed','Chinese','Indian','European'],'values':[21,22,23,24,125,126,127,128,129,130,131,141,142,0]})
可以使用下面的代码生成另一个应该填充输出的空数据框
columns = ['person_id','obsid','valuenum','valuestring','valueid']
obs = pd.DataFrame(columns=columns)
我想要达到的目标显示在表格中,您可以在其中看到如何填充数据的规则和描述
我确实尝试过使用 for 循环方法,但是一旦我将其拆开,我就会丢失列名,并且不确定如何进一步进行。
a=1
for i in range(len(data_file)):
df_temp = data_file[i:a]
a=a+1
df_temp=df_temp.unstack()
df_temp = df_temp.to_frame().reset_index()
我怎样才能让我的输出数据框填充如下所示(ps:我只显示了 person_id = 1 和 4 列)但在实时,我有超过 25k 个人和每个人 400 列。因此,与我的 for 循环不同,任何优雅高效的方法都会有所帮助。
【问题讨论】:
-
任何其他方法也有帮助
标签: python python-3.x pandas dataframe merge