python - 使用带有多个分隔符的 numpy 数组导入
问题描述
我想知道如何导入具有多个分隔符的文件。
我有以下行:
"1,000";"2,000";"3,000"
如何使用 numpy 导入数据?
我有以下代码
data=numpy.loadtxt(filepath,delimiter=';')
如何为“”传递第二个分隔符
亲切的问候
解决方案
pandas.read_csv
可以读取这样的文件。它允许您控制分隔符和小数点字符。
这是我的文件delim.dat
:
"1,000";"2,000";"3,000"
"5,000";"6,000";"7,000"
"8,000";"9,000";"9,100"
"9,250";"9,500";"9,990"
使用参数delimiter=';'
和decimal=','
in pandas.read_csv
:
In [11]: import pandas as pd
In [12]: df = pd.read_csv('delim.dat', sep=';', decimal=',', header=None)
In [13]: df
Out[13]:
0 1 2
0 1.00 2.0 3.00
1 5.00 6.0 7.00
2 8.00 9.0 9.10
3 9.25 9.5 9.99
您也可以使用numpy.genfromtxt
,但您必须使用converters
参数将每个字段从转换bytes
为浮点数。例如,
In [54]: def myconvert(s):
...: return float(s.strip(b'"').replace(b',', b'.'))
...:
...:
In [55]: a = np.genfromtxt('delim.dat', delimiter=';', converters={k: myconvert for k in range(3)})
In [56]: a
Out[56]:
array([[1. , 2. , 3. ],
[5. , 6. , 7. ],
[8. , 9. , 9.1 ],
[9.25, 9.5 , 9.99]])
推荐阅读
- c# - Kaltura API C#如何获取StringEnum的值
- vue.js - Vue devtools 刷新后停止
- c# - 如何使用视图模型中的对象列表在 MVC 中创建“创建”视图?
- reactjs - Typescript如何在通过道具传递时使功能成为可选
- java - dropwizard中的多个数据库
- python - 在将我的机器人部署到 heroku 时如何解决此错误?
- swift - 我们什么时候需要使用 JSONEncoder 和 JSONDecoder 和 UserDefaults
- firebase - 在 Flutter 的垂直 ScrollView 内的水平 ListView 中显示来自 Firestore 的数据
- c# - FileInfo.CopyTo 如何检测覆盖
- oracle - REST API 插入无法使用 node-oracledb