2017-04-25 118 views
0

我有這樣的數據,我不知道如何拆分和轉換成表。Python的熊貓與文本拆分列

我使用熊貓來分隔|,但我不知道如何分隔|和=在這種情況下同時。

數據樣本是這樣的通過TXT:

SPK_VOLUME=|DEVICE_STATUS=|WAKE_UP=|SCS_STATUS=|SCS_CLASS=||MUSIC_URL_STATUS=|MUSIC_LOGIN_STATUS=|MUSIC_STREAMING_CONNECT_STATUS=|MUSIC_STREAMING_STATUS=|PLAYER_PLAYING_TIME=|TTS_STATUS=|TTS_CLASS=|ALARM_STATUS=|ALARM_END_REASON=|FOTA_STATUS=|FOTA_FAIL_REASON= 
.... 

予加載的數據與熊貓

log_file = pd.read_csv("./log_file.txt", 
         sep = "|") 

但是,同時也想通過「=」分裂和由值來創建表。

SPK_VOLUME DEVICE_STATUS WAKE_UP 
5 22221 0 
2 42241 2 
3 125214 1 

感謝您的幫助

回答

2

嘗試通過sep=r'\=\|',這個工作對我來說:

In [189]: 

t="""SPK_VOLUME=|DEVICE_STATUS=|WAKE_UP=|SCS_STATUS=|SCS_CLASS=||MUSIC_URL_STATUS=|MUSIC_LOGIN_STATUS=|MUSIC_STREAMING_CONNECT_STATUS=|MUSIC_STREAMING_STATUS=|PLAYER_PLAYING_TIME=|TTS_STATUS=|TTS_CLASS=|ALARM_STATUS=|ALARM_END_REASON=|FOTA_STATUS=|FOTA_FAIL_REASON=""" 
df = pd.read_csv(io.StringIO(t), sep=r'\=\|') 
df.columns.tolist() 

Out[189]: 
['SPK_VOLUME', 
'DEVICE_STATUS', 
'WAKE_UP', 
'SCS_STATUS', 
'SCS_CLASS', 
'|MUSIC_URL_STATUS', 
'MUSIC_LOGIN_STATUS', 
'MUSIC_STREAMING_CONNECT_STATUS', 
'MUSIC_STREAMING_STATUS', 
'PLAYER_PLAYING_TIME', 
'TTS_STATUS', 
'TTS_CLASS', 
'ALARM_STATUS', 
'ALARM_END_REASON', 
'FOTA_STATUS', 
'FOTA_FAIL_REASON='] 

或者你可以直接撥打.str.rstrip.columns屬性作爲後處理步驟:

In [192]: 
df.columns = df.columns.str.rstrip('=') 
df.columns.tolist() 

Out[192]: 
['SPK_VOLUME', 
'DEVICE_STATUS', 
'WAKE_UP', 
'SCS_STATUS', 
'SCS_CLASS', 
'Unnamed: 5', 
'MUSIC_URL_STATUS', 
'MUSIC_LOGIN_STATUS', 
'MUSIC_STREAMING_CONNECT_STATUS', 
'MUSIC_STREAMING_STATUS', 
'PLAYER_PLAYING_TIME', 
'TTS_STATUS', 
'TTS_CLASS', 
'ALARM_STATUS', 
'ALARM_END_REASON', 
'FOTA_STATUS', 
'FOTA_FAIL_REASON'] 
+0

Gratz on 100k :-) – piRSquared

+0

@piRSquare d謝謝,[swag](https://meta.stackoverflow.com/questions/291791/what-do-i-get-with-100k-reputation)在它的途中 – EdChum

+0

@EdChum - 恭喜100k;) – jezrael