[英]reformatting a sequential data file into a data frame using pandas
我有一個輸入文件,現在將其轉換為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,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
survey, 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'
你可以不用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.