Saq*_*uib 2 python io file dataframe pandas
我有一个表格的文本文件:
data.txt中
2
8
4
3
1
9
6
5
7
Run Code Online (Sandbox Code Playgroud)
如何将其读入熊猫数据帧
0 1 2
0 2 8 4
1 3 1 9
2 6 5 7
Run Code Online (Sandbox Code Playgroud)
试试这个:
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)
选项 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)
要加载整数,传递dtype给loadtxt -
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,这将无法正确分离。
| 归档时间: |
|
| 查看次数: |
1995 次 |
| 最近记录: |