熊猫解析文本数据并分配列

我有下面的文本数据,我想将其解析pandas为列数据。我需要每四行有四列。

My trial输出中,我们需要VC_VERSION 分成VC_ACTIVE_VERSION&VC_STANDBY_VERSION

我的审判:

df  = pd.read_csv("file.txt", names=["col1"])

df = df.col1.str.split(' ', expand = True)

df = df.drop(df.columns[[0, 2, 3, 4, 5, 6, 7, 8, 11]], axis=1)


df = df.rename(columns={ 1: 'ENC_NAME', 9: 'VC_VERSION', 10: 'OA_VERSION'})


print(df)


       ENC_NAME VC_VERSION OA_VERSION

0    enc1001       None       None

1                   KVM       4.85

2                  4.50       None

3                  4.50       None

4    enc1002       None       None

5                   KVM       4.85

6                  4.50       None

7                  4.50       None

8    enc1003       None       None

9                   KVM       4.85

10                 4.50       None

11                 4.50       None

12   enc1004       None       None

13                  KVM       4.85

14                 4.50       None

15                 4.50       None

----------------- data snipped ---------------

期望:

   ENC_NAME OA_VERSION VC_ACTIVE VC_STDN

    enc1001       4.85      4.50    4.50

    enc1002       4.85      4.50    4.50

    enc1003       4.85      4.50    4.50

    enc1004       4.85      4.50    4.50

    enc1005       4.85      4.50    4.50

    enc1006       4.85      4.50    4.50

    enc1007       4.85      4.50    4.50

    enc1008       4.85      4.40    4.40

    enc1009       4.85      4.50    4.50

    enc2001       4.85      4.50    4.50

    enc2002       4.85      4.50    4.50

    enc2003       4.85      4.50    4.50

请帮助获得熊猫。提前致谢。


达令说
浏览 77回答 1
1回答

SMILET

以下代码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+)$').valuesdf = df.pivot('row','col','value')df.columns = ['ENC_NAME', 'OA_VERSION', 'VC_ACTIVE', 'VC_STDN']结果:    ENC_NAME OA_VERSION VC_ACTIVE VC_STDNrow                                      1    enc1001       4.85      4.50    4.502    enc1002       4.85      4.50    4.503    enc1003       4.85      4.50    4.504    enc1004       4.85      4.50    4.505    enc1005       4.85      4.50    4.506    enc1006       4.85      4.50    4.507    enc1007       4.85      4.50    4.508    enc1008       4.85      4.40    4.409    enc1009       4.85      4.50    4.5010   enc2001       4.85      4.50    4.5011   enc2002       4.85      4.50    4.5012   enc2003       4.85      4.50    4.5013   enc2004       4.85      4.50    4.5014   enc2005       4.85      4.50    4.5015   enc2006       4.85      4.50    4.5016   enc2007       4.85      4.50    4.5017   enc2008       4.85      4.50    4.5018   enc2009       4.85      4.50    4.5019   enc2011       4.85      4.50    4.5020   enc2013       4.85      4.50    4.5021   enc3020       4.85      4.41    4.4122   enc3021       4.85      4.41    4.4123   enc3022       4.85      4.41    4.4124   enc3026       4.85      4.45    4.4525   enc3027       4.85      4.50    4.5026   enc3028       4.85      4.50    4.5027   enc3029       4.85      4.50    4.5028   enc3030       4.85      4.50    4.5029   enc3031       4.85      4.50    4.5030   enc4021       4.85      4.41    4.4131   enc4023       4.85      4.41    4.4132   enc4024       4.85      4.41    4.4133   enc4025       4.85      4.41    4.4134   enc4026       4.85      4.50    4.5035   enc4027       4.85      4.50    4.5036   enc4028       4.85      4.50    4.5037   enc4029       4.85      4.50    4.5038   enc4030       4.85      4.50    4.5039   enc4031       4.85      4.50    4.5040   enc4032       4.85      4.50    4.5041   enc4033       4.85      4.50    4.5042   enc4034       4.85      4.50    4.5043   enc6002       4.60       NaN     NaN44   enc6011       4.60       NaN     NaN45   enc6012       4.60       NaN     NaN46   enc6013       4.60       NaN     NaN47   enc6014       4.60       NaN     NaN48   enc6015       4.60       NaN     NaN49   enc6016       4.60       NaN     NaN50   enc6017       4.60       NaN     NaN51   enc7002       4.85       NaN     NaN52   enc7003       4.85       NaN     NaN53   enc7004       4.85       NaN     NaN54   enc7009       4.85      4.50    4.5055   enc1010       4.85      4.50    4.5056   enc1011       4.85      4.50    4.5057   enc1012       4.85      4.50    4.5058   enc1013       4.85      4.50    4.5059   enc1014       4.85      4.50    4.5060   enc1015       4.85      4.50    4.5061   enc1016       4.85      4.50    4.5062   enc1017       4.85      4.50    4.5063   enc1018       4.85      4.50    4.5064   enc1025       4.85      4.62    4.6265   enc1026       4.85      4.50    4.5066   enc2010       4.85      4.50    4.5067   enc2012       4.85      4.50    4.5068   enc2014       4.85      4.50    4.5069   enc2015       4.85      4.50    4.5070   enc2016       4.85      4.50    4.5071   enc2018       4.85      4.50    4.5072   enc2019       4.85      4.50    4.5073   enc2020       4.85      4.50    4.5074   enc2021       4.85      4.50    4.5075   enc2022       4.85      4.50    4.5076   enc2023       4.85      4.50    4.5077   enc3033       4.85      4.50    4.5078   enc3034       4.85      4.50    4.5079   enc3036       4.85      4.50    4.5080   enc4020       4.85      4.41    4.4181   enc4022       4.85      4.41    4.4182   enc4035       4.85      4.50    4.5083   enc7005       4.85      4.50    4.5084   enc7006       4.85      4.50    4.5085   enc7007       4.85      4.62    4.6286   enc7008       4.85      4.62    4.6287   enc8001       4.85      4.50    4.5088   enc8017       4.85      4.50    4.5089   enc8018       4.85      4.50    4.5090   enc8019       4.85      4.50    4.5091   enc8021       4.85      4.50    4.5092   enc8022       4.85      4.62    4.6293   enc8023       4.85      4.62    4.6294   enc8024       4.85      4.62    4.6295   enc8025       4.85      4.62    4.6296   enc8026       4.85      4.62    4.6297   enc8027       4.85      4.62    4.6298   enc8028       4.85      4.62    4.6299   enc8033       4.85      4.40    4.40
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python