为了账号安全,请及时绑定邮箱和手机立即绑定

使用 pandas 将顺序数据文件重新格式化为数据框

使用 pandas 将顺序数据文件重新格式化为数据框

慕神8447489 2022-01-11 17:11:37
我有一个输入文件,现在转换为pandas.dataframe. 记录/行按顺序排列,其中包含表单的相关数据    survey, a, b, c    section, 1, 2, 3    observation, a, b, c    values, 1, 2, 3     values, 4, 5, 6    observation, d, e, f    values, 7, 8, 9    section, 4, 5, 6    ...调查记录只出现一次。一个部分可能会出现多次,并将包含观察和价值记录。观察结果后面总是有值,有时是多条记录。我正在尝试将其重新格式化为行,其中每组值与相应的调查、部分和观察位于单独的行上。survey, a,b,c, section, 1,2,3, observation, a,b,c, values, 1,2,3survey, a,b,c, section, 1,2,3, observation, a,b,c, values, 4,5,6survey, a,b,c, section, 1,2,3, observation, d, e, f, values, 7, 8, 9survey, a,b,c, section, 4, 5, 6 and so on....这可以pandas通过 if, then else 结构来完成还是应该迭代?到目前为止,我尝试过的方法如下(这些方法可能过于简单并且方向错误):#pd.DataFrame(hmdDataToProcess.unstack())#hmdDataToProcess.unstack#hmdDataToProcess.stack#pd.melt(hmdDataToProcess, id_vars =[0], value_vars = ['SURVEY','SECTION','OBSERV','OBVAL'])#df2 = hmdDataToProc0ess.pivot_table(index = [0]).reset_index()#df2 = df_in.pivot_table(index = #['Example1','Example2'],columns='VC', values=#['Weight','Rank']).reset_index()#hmdDataToProcess.groupby('SECTION').groups #, 'OBSERV', 'OBVAL'
查看完整描述

1 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

你可以不使用 Pandas


s = '''survey, a, b, c

     section, 1, 2, 3

     observation, a, b, c

     values, 1, 2, 3 

     values, 4, 5, 6

     observation, d, e, f

     values, 7, 8, 9

     section, 4, 5, 6'''

list_s = s.strip().split('\n')

list_s = [x.strip() for x in list_s]

list_s

# ['survey, a, b, c', 'section, 1, 2, 3', 'observation, a, b, c', 'values, 1, 2, 3', 'values, 4, 5, 6', 'observation, d, e, f', 'values, 7, 8, 9', 'section, 4, 5, 6']

for el in list_s:

   if el.split(',')[0] == 'survey':

     survey = el

   if el.split(',')[0] == 'section':

     section = el

   if el.split(',')[0] == 'observation':

     observation = el

   if el.split(',')[0] == 'values':

     print(f"{survey},{section},{observation},{el}")

#survey, a, b, c,section, 1, 2, 3,observation, a, b, c,values, 1, 2, 3

#survey, a, b, c,section, 1, 2, 3,observation, a, b, c,values, 4, 5, 6

#survey, a, b, c,section, 1, 2, 3,observation, d, e, f,values, 7, 8, 9


查看完整回答
反对 回复 2022-01-11
  • 1 回答
  • 0 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信