pandas read_csv忽略每个值前面的列索引

时间:2016-02-17 03:00:28

标签: python pandas

有没有办法像这样读取这样的文件并跳过列索引(1-5)?我正在使用read_csv。

24.0 1:0.00632 2:18.00 3:2.310 4:0 5:0.5380 
21.6 1:0.02731 2:0.00 3:7.070 4:0 5:0.4690 

预期表格读取:

24.0 0.00632 18.00 2.310 0 0.5380 

2 个答案:

答案 0 :(得分:2)

read_csv不会按照您想要的方式处理,因为它不是CSV。

你可以这样做。

pd.DataFrame([[chunk.split(':')[-1] for chunk in line.split()] for line in f])

答案 1 :(得分:1)

您的数据结构奇特。给定冒号索引分隔符,您可以通过通常的read_csv将文件作为文本读取。然后,循环遍历数据框中的每一列(第一列除外),将字符串拆分为':',取第二个元素表示所需的值,并将该值转换为浮点数(全部通过列表推导完成)

df = pd.read_csv('data.txt', sep=' ', header=None)

>>> df
      0          1        2        3    4         5
0  24.0  1:0.00632  2:18.00  3:2.310  4:0  5:0.5380
1  21.6  1:0.02731   2:0.00  3:7.070  4:0  5:0.4690

df.iloc[:, 1:] = df.iloc[:, 1:].applymap(lambda s: float(s.split(':')[1]))

>>> df
      0        1   2     3  4      5
0  24.0  0.00632  18  2.31  0  0.538
1  21.6  0.02731   0  7.07  0  0.469