1 回答

TA贡献1796条经验 获得超4个赞
以下代码ENC_NAME从标题行(带=符号)和所有其他行的最后一个值中获取,假设这些行是按所需顺序排列的。然后我们分配行号和列号以及数据透视表。
优点是它不依赖于数据中的空格数。
df = pd.read_csv('file.txt', sep='\n',header=None, names=['col1'])
df['row'] = df.col1.str.contains('===').cumsum()
df['col'] = df.groupby('row').cumcount()
df['value'] = df.col1.str.extract('=== (.*) ===')
m = df.value.isna()
df.loc[m,'value'] = df.loc[m,'col1'].str.extract('(\d+\.\d+)$').values
df = df.pivot('row','col','value')
df.columns = ['ENC_NAME', 'OA_VERSION', 'VC_ACTIVE', 'VC_STDN']
结果:
ENC_NAME OA_VERSION VC_ACTIVE VC_STDN
row
1 enc1001 4.85 4.50 4.50
2 enc1002 4.85 4.50 4.50
3 enc1003 4.85 4.50 4.50
4 enc1004 4.85 4.50 4.50
5 enc1005 4.85 4.50 4.50
6 enc1006 4.85 4.50 4.50
7 enc1007 4.85 4.50 4.50
8 enc1008 4.85 4.40 4.40
9 enc1009 4.85 4.50 4.50
10 enc2001 4.85 4.50 4.50
11 enc2002 4.85 4.50 4.50
12 enc2003 4.85 4.50 4.50
13 enc2004 4.85 4.50 4.50
14 enc2005 4.85 4.50 4.50
15 enc2006 4.85 4.50 4.50
16 enc2007 4.85 4.50 4.50
17 enc2008 4.85 4.50 4.50
18 enc2009 4.85 4.50 4.50
19 enc2011 4.85 4.50 4.50
20 enc2013 4.85 4.50 4.50
21 enc3020 4.85 4.41 4.41
22 enc3021 4.85 4.41 4.41
23 enc3022 4.85 4.41 4.41
24 enc3026 4.85 4.45 4.45
25 enc3027 4.85 4.50 4.50
26 enc3028 4.85 4.50 4.50
27 enc3029 4.85 4.50 4.50
28 enc3030 4.85 4.50 4.50
29 enc3031 4.85 4.50 4.50
30 enc4021 4.85 4.41 4.41
31 enc4023 4.85 4.41 4.41
32 enc4024 4.85 4.41 4.41
33 enc4025 4.85 4.41 4.41
34 enc4026 4.85 4.50 4.50
35 enc4027 4.85 4.50 4.50
36 enc4028 4.85 4.50 4.50
37 enc4029 4.85 4.50 4.50
38 enc4030 4.85 4.50 4.50
39 enc4031 4.85 4.50 4.50
40 enc4032 4.85 4.50 4.50
41 enc4033 4.85 4.50 4.50
42 enc4034 4.85 4.50 4.50
43 enc6002 4.60 NaN NaN
44 enc6011 4.60 NaN NaN
45 enc6012 4.60 NaN NaN
46 enc6013 4.60 NaN NaN
47 enc6014 4.60 NaN NaN
48 enc6015 4.60 NaN NaN
49 enc6016 4.60 NaN NaN
50 enc6017 4.60 NaN NaN
51 enc7002 4.85 NaN NaN
52 enc7003 4.85 NaN NaN
53 enc7004 4.85 NaN NaN
54 enc7009 4.85 4.50 4.50
55 enc1010 4.85 4.50 4.50
56 enc1011 4.85 4.50 4.50
57 enc1012 4.85 4.50 4.50
58 enc1013 4.85 4.50 4.50
59 enc1014 4.85 4.50 4.50
60 enc1015 4.85 4.50 4.50
61 enc1016 4.85 4.50 4.50
62 enc1017 4.85 4.50 4.50
63 enc1018 4.85 4.50 4.50
64 enc1025 4.85 4.62 4.62
65 enc1026 4.85 4.50 4.50
66 enc2010 4.85 4.50 4.50
67 enc2012 4.85 4.50 4.50
68 enc2014 4.85 4.50 4.50
69 enc2015 4.85 4.50 4.50
70 enc2016 4.85 4.50 4.50
71 enc2018 4.85 4.50 4.50
72 enc2019 4.85 4.50 4.50
73 enc2020 4.85 4.50 4.50
74 enc2021 4.85 4.50 4.50
75 enc2022 4.85 4.50 4.50
76 enc2023 4.85 4.50 4.50
77 enc3033 4.85 4.50 4.50
78 enc3034 4.85 4.50 4.50
79 enc3036 4.85 4.50 4.50
80 enc4020 4.85 4.41 4.41
81 enc4022 4.85 4.41 4.41
82 enc4035 4.85 4.50 4.50
83 enc7005 4.85 4.50 4.50
84 enc7006 4.85 4.50 4.50
85 enc7007 4.85 4.62 4.62
86 enc7008 4.85 4.62 4.62
87 enc8001 4.85 4.50 4.50
88 enc8017 4.85 4.50 4.50
89 enc8018 4.85 4.50 4.50
90 enc8019 4.85 4.50 4.50
91 enc8021 4.85 4.50 4.50
92 enc8022 4.85 4.62 4.62
93 enc8023 4.85 4.62 4.62
94 enc8024 4.85 4.62 4.62
95 enc8025 4.85 4.62 4.62
96 enc8026 4.85 4.62 4.62
97 enc8027 4.85 4.62 4.62
98 enc8028 4.85 4.62 4.62
99 enc8033 4.85 4.40 4.40
添加回答
举报