我有这个人.列表:
list_vals = ['col_a col_B col_C', '12.0 34.0 10.0', '15.0 111.0 23']
Run Code Online (Sandbox Code Playgroud)
如何将其转换为pandas数据帧?
我可以这样开头:
df = pd.DataFrame(columns=list_vals[0].split())
Run Code Online (Sandbox Code Playgroud)
有没有办法填充其余的数据帧?
DSM*_*DSM 10
您可以使用io.StringIO将字符串输入read_csv:
In [23]: pd.read_csv(io.StringIO('\n'.join(list_vals)), delim_whitespace=True)
Out[23]:
col_a col_B col_C
0 12.0 34.0 10.0
1 15.0 111.0 23.0
Run Code Online (Sandbox Code Playgroud)
这样做的好处是它会自动执行pandas在读取普通csv时会执行的类型解释 - 列是浮点数:
In [24]: _.dtypes
Out[24]:
col_a float64
col_B float64
col_C float64
dtype: object
Run Code Online (Sandbox Code Playgroud)
虽然您可以直接将列表提供给DataFrame构造函数,但所有内容都会保留字符串:
In [21]: pd.DataFrame(columns=list_vals[0].split(),
data=[row.split() for row in list_vals[1:]])
Out[21]:
col_a col_B col_C
0 12.0 34.0 10.0
1 15.0 111.0 23
In [22]: _.dtypes
Out[22]:
col_a object
col_B object
col_C object
dtype: object
Run Code Online (Sandbox Code Playgroud)
dtype=float当然,我们可以添加修复它,但我们可能有混合类型,这种read_csv方法可以通常的方式处理,这里我们必须手动完成.
| 归档时间: |
|
| 查看次数: |
5812 次 |
| 最近记录: |