如何使用附加定界符从csv在python中创建熊猫数据框?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用附加定界符从csv在python中创建熊猫数据框?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2060字,纯文字阅读大概需要3分钟。
内容图文
![如何使用附加定界符从csv在python中创建熊猫数据框?](/upload/InfoBanner/zyjiaocheng/680/0c2bd58136ce4f488c2ebc9048279b65.jpg)
我有一个较大的csv(约40万行),我希望将其转换为python中的数据框.原始文件有两列:文本列,然后是int(或NAN)列.
例:
...
P-X1-6030-07-A01 368963
P-X1-6030-08-A01 368964
P-X1-6030-09-A01 368965
P-A-1-1011-14-G-01 368967
P-A-1-1014-01-G-05 368968
P-A-1-1017-02-D-01 368969
...
我希望按照示例文本的最后三行的模式将text列拆分为一系列列(例如,PA 1 1017 02 D 01 368969)
注意文本字段的格式可能有所不同(P-X1与P-X-1),如何最好地做到这一点?
解决方法:
第一次尝试
read_csv的规范表明它采用了正则表达式,但这似乎是不正确的.在检查了源代码之后,似乎只需要使用一系列字符来填充一组字符,然后是,因此sep的以下参数将用于创建正则表达式,例如
`[- ]+`.
导入必要的库以重新创建:
import pandas as pd
import StringIO
您可以使用一组字符作为定界符,使用pd.read_csv无法解析不匹配的行,但是如果要单独解析它们:
pd.read_csv(StringIO.StringIO('''P-X1-6030-07-A01 368963
P-X1-6030-08-A01 368964
P-X1-6030-09-A01 368965'''), sep=r'- ') # sep arg becomes regex, i.e. `[- ]+`
和
pd.read_csv(StringIO.StringIO('''P-A-1-1011-14-G-01 368967
P-A-1-1014-01-G-05 368968
P-A-1-1017-02-D-01 368969'''), sep=r'- ')
但是read_csv显然无法为分隔符使用真正的正则表达式.
最终解决方案
这意味着我们需要一个定制的解决方案:
import re
import StringIO
import pandas as pd
txt = '''P-X1-6030-07-A01 368963
P-X1-6030-08-A01 368964
P-X1-6030-09-A01 368965
P-A-1-1011-14-G-01 368967
P-A-1-1014-01-G-05 368968
P-A-1-1017-02-D-01 368969'''
fileobj = StringIO.StringIO(txt)
def df_from_file(fileobj):
'''
takes a file object, returns DataFrame with columns grouped by
contiguous runs of either letters or numbers (but not both together)
'''
# unfortunately, we must materialize the data before putting it in the DataFrame
gen_records = [re.findall(r'(\d+|[A-Z]+)', line) for line in fileobj]
return pd.DataFrame.from_records(gen_records)
df = df_from_file(fileobj)
现在df返回:
0 1 2 3 4 5 6 7
0 P X 1 6030 07 A 01 368963
1 P X 1 6030 08 A 01 368964
2 P X 1 6030 09 A 01 368965
3 P A 1 1011 14 G 01 368967
4 P A 1 1014 01 G 05 368968
5 P A 1 1017 02 D 01 368969
内容总结
以上是互联网集市为您收集整理的如何使用附加定界符从csv在python中创建熊猫数据框?全部内容,希望文章能够帮你解决如何使用附加定界符从csv在python中创建熊猫数据框?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。