Max*_*axU 6

试试这个:

with open(filename, 'r') as f:
    data = f.read().replace('\n',',').replace(',,','\n')

In [7]: pd.read_csv(pd.compat.StringIO(data), header=None)
Out[7]:
   0  1  2
0  2  8  4
1  3  1  9
2  6  5  7
Run Code Online (Sandbox Code Playgroud)


cs9*_*s95 5

选项 1
更容易,如果您知道N组中总是有元素 - 只需加载您的数据并重塑 -

pd.DataFrame(np.loadtxt('data.txt').reshape(3, -1))

     0    1    2
0  2.0  8.0  4.0
1  3.0  1.0  9.0
2  6.0  5.0  7.0
Run Code Online (Sandbox Code Playgroud)

要加载整数,传递dtypeloadtxt -

pd.DataFrame(np.loadtxt('data.txt', dtype=int).reshape(3, -1))

   0  1  2
0  2  8  4
1  3  1  9
2  6  5  7
Run Code Online (Sandbox Code Playgroud)

选项 2
这是更通用的,当您不能保证一次总是有 3 个数字时会起作用。这里的想法是将空行读取为NaN,并根据NaNs的存在将数据分开。

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

      0
0   2.0
1   8.0
2   4.0
3   NaN
4   3.0
5   1.0
6   9.0
7   NaN
8   6.0
9   5.0
10  7.0

df_list = []
for _, g in df.groupby(df.isnull().cumsum().values.ravel()):
    df_list.append(g.dropna().reset_index(drop=True))

df = pd.concat(df_list, axis=1, ignore_index=True)
df

     0    1    2
0  2.0  8.0  4.0
1  3.0  1.0  9.0
2  6.0  5.0  7.0
Run Code Online (Sandbox Code Playgroud)

警告 - 如果您的数据有 NaN,这将无法正确分离。