亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

熊貓解析文本數據并分配列

熊貓解析文本數據并分配列

達令說 2023-02-07 16:01:09
我有下面的文本數據,我想將其解析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_VERSION0    enc1001       None       None1                   KVM       4.852                  4.50       None3                  4.50       None4    enc1002       None       None5                   KVM       4.856                  4.50       None7                  4.50       None8    enc1003       None       None9                   KVM       4.8510                 4.50       None11                 4.50       None12   enc1004       None       None13                  KVM       4.8514                 4.50       None15                 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請幫助獲得熊貓。提前致謝。
查看完整描述

1 回答

?
SMILET

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



查看完整回答
反對 回復 2023-02-07
  • 1 回答
  • 0 關注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號