簡體   English   中英

當值有空格時,將空格分隔的文件轉換為 Pandas

[英]Space separated file to Pandas when values have spaces

我有一個空格分隔的文本文件。 前 3 列在 values 中包含空格,但它們具有固定寬度(7 個字符)。

例子:

A123456 B123456 C123456 12 158 325 0 14
D123456 E123456 F123456 1 147 23 711 0
G1 3456 H123456 F 23456 158 11 7 574 12589
J1234 6 K   456 L123456 1458 2 0.45 1 78

期望的輸出:

0 1 2 3 4 5 6 7
0 A123456 B123456 C123456 12 158 325 0
1 D123456 E123456 F123456 1 147 23 711
2 G1 3456 H123456 F 23456 158 11 7 574
3 J1234 6 K 456 L123456 1458 2 0.45 1

我可以用熊貓讀取這個文件嗎?

我們可以使用pd.read_fwf來“將固定寬度格式化行的表格讀入 DataFrame”

df = pd.read_fwf('data.txt', colspecs='infer', header=None)

df

         0        1        2                   3
0  A123456  B123456  C123456     12 158 325 0 14
1  D123456  E123456  F123456      1 147 23 711 0
2  G1 3456  H123456  F 23456  158 11 7 574 12589
3  J1234 6  K   456  L123456    1458 2 0.45 1 78

如果框架的其余部分要以空格分隔,則第3列可以在空格上進行str.split

df = pd.read_fwf('data.txt', colspecs='infer', header=None)
# Replace 3 with new columns
df = df.drop(3, axis=1).join(df[3].str.split(expand=True), rsuffix='_x')
# Rename columns
df.columns = range(len(df.columns))

df

         0        1        2     3    4     5    6      7
0  A123456  B123456  C123456    12  158   325    0     14
1  D123456  E123456  F123456     1  147    23  711      0
2  G1 3456  H123456  F 23456   158   11     7  574  12589
3  J1234 6  K   456  L123456  1458    2  0.45    1     78

data.txt

A123456 B123456 C123456 12 158 325 0 14
D123456 E123456 F123456 1 147 23 711 0
G1 3456 H123456 F 23456 158 11 7 574 12589
J1234 6 K   456 L123456 1458 2 0.45 1 78

您可以使用以下任何一種:-

data = pd.read_csv('data.txt',
                   sep=";|:|,",
                   header=None,
                   engine='python')

或者使用read_fwf

df = pd.read_fwf('data.txt', colspecs='infer', header=None)

這將在新列中寫入每個值。 希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM