我有一些看起来像这样的数据:
c stuff c more header c begin data 1 1:.5 1 2:6.5 1 3:5.3
我想将其导入3列数据框,例如
a , b, c 1, 1, 0.5 etc
我一直试图读取数据,因为2列在’:’上分割,然后在’‘上分割了第一列。但是我发现它令人讨厌。是否有更好的方法可以直接在导入时对其进行分类?
目前:
data1 = pd.read_csv(file_loc, skiprows = 3, delimiter = ':', names = ['AB', 'C']) data2 = pd.DataFrame(data1.AB.str.split(' ',1).tolist(), names = ['A','B'])
但是,由于我的数据处于领先地位,这使情况更加复杂。
我觉得这应该是一个简单的任务,但是目前我正在考虑逐行读取它,并在导入之前使用一些find replace清理数据。
一种方法可能是使用python引擎允许的正则表达式分隔符。例如:
>>> !cat castle.dat c stuff c more header c begin data 1 1:.5 1 2:6.5 1 3:5.3 >>> df = pd.read_csv('castle.dat', skiprows=3, names=['a', 'b', 'c'], sep=' |:', engine='python') >>> df a b c 0 1 1 0.5 1 1 2 6.5 2 1 3 5.3