首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将杂乱的文本文件导入Pandas

将杂乱的文本文件导入Pandas
EN

Stack Overflow用户
提问于 2019-10-07 23:04:34
回答 3查看 302关注 0票数 0

我正在尝试将一个非常混乱的文本文件加载到Python/Pandas中。以下是文件中数据外观的示例

数据分析v2.2.1 -价格活动数据-票价1.txt数据: 2017-12-01 02:13:00UTC- 2017-12-31 18:12:00 UTCGenerated: 2018-01-16 19:44:53 UTCticker日期描述行业价格-R T1-数量V-差值价格-差值数量-增量中心-日期中心-时间中心-时区票务1 2017-12-01 02:13:00公司N/A N/A 0.0 1 1.0 0.01.0 2017-11-30 21:13:00 US/EasternTicker1 2017-12-01 06:27:00 Company Inc. N/A N/A 0.0 1 1.0 0.0 1.0 2017-12- 01 :27:00 US/东部

我已经尝试过使用分隔符“”的Pandas pd.read_csv函数。然而,由于最初的说明,它看起来不能正常工作。

代码语言:javascript
复制
import pandas as pd

data = pd.read_csv('Ticker1.txt', sep=" ", 
                   names = ['ticker',   'date', 'description',  'sector',   'industry', 'raw-s',    's-volume', 's-dispersion', 'raw-s-delta',  'volume-delta', 'center-date',  'center-time',  'center-time-zone'])

文件数据:

数据分析v2.2.1 -价格活动数据-票价1.txt数据: 2017-12-01 02:13:00UTC- 2017-12-31 18:12:00 UTCGenerated: 2018-01-16 19:44:53 UTCticker日期描述行业价格-R T1-数量V-差值价格-差值数量-增量中心-日期中心-时间中心-时区票务1 2017-12-01 02:13:00公司N/A N/A 0.0 1 1.0 0.01.0 2017-11-30 21:13:00 US/EasternTicker1 2017-12-01 06:27:00 Company Inc. N/A N/A 0.0 1 1.0 0.0 1.0 2017-12- 01 :27:00 US/东部

预期结果:

初始注释仅供参考,应忽略不计。

“数据分析v2.2.1 -价格活动数据-票价1.txt数据: 2017-12-01 02:13:00utc- 2017-12-31 18:12:00 UTCGenerated: 2018-01-16 19:44:53 UTC”

列:

‘股票行情’,‘日期’,‘描述’,‘行业’,‘价格-R’,‘T1-量’,‘V-离差’,‘价格-增量’,‘量-增量’,‘中心日期’,‘中心时间’,‘中心时区’

数据:

Ticker1 2017-12-01 02:13:00公司N/A N/A 0.0 1 1.0 0.0 1.0 2017-11-30 21:13:00美国/东部

Ticker1 2017-12-01 06:27:00公司N/A N/A 0.0 1 1.0 0.0 1.0 2017-12-01 01:27:00美国/东部

EN

回答 3

Stack Overflow用户

发布于 2019-10-07 23:08:21

pandas read_csv()有许多内置组件(如skiprows)来处理这样的问题。https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html

票数 0
EN

Stack Overflow用户

发布于 2019-10-07 23:36:17

假设你有3行,你想跳过:

代码语言:javascript
复制
import pandas as pd

labels_read = ['ticker','date','d0','d1','sector','industry','Price-R','T1-volume','V-dispersion','Price-delta','volume-delta','center-date','center-time','center-time-zone']
labels = ['ticker','date','description','sector','industry','Price-R','T1-volume','V-dispersion','Price-delta','volume-delta','center-date','center-time','center-time-zone']
df = pd.read_csv("test1.csv",sep=" ",skiprows=3, names=labels_read)
df['description'] = df['d0'].str.cat(df['d1'],sep=" ")
df = df[labels]
票数 0
EN

Stack Overflow用户

发布于 2019-10-07 23:55:13

感谢@PySeeker和@jtwilson的回答。感谢您的快速回复。Skiprows参数对我很有帮助。然而,我不得不使用一些技巧来决定行号。这个技巧可能并不有效,但我能够理解这一点,因此我使用了它。

代码语言:javascript
复制
""" Need to print first few lines to understand where the header starts"""

lines = []

for line in pd.read_csv('Ticker1.txt', encoding='utf-8', header=None, chunksize=1):
    lines.append(line.iloc[0,0])

print(lines[0:4])

""" 

1. Its a tab delimiter file
2. Looks like first 4 lines need to be ignored

"""


import pandas as pd

data = pd.read_csv('Ticker1.txt', sep="\t", skiprows = 4)

data.columns = ['ticker',   'date', 'description',  'sector',   'industry', 'raw-s',    's-volume', 's-dispersion', 'raw-s-delta',  'volume-delta', 'center-date',  'center-time',  'center-time-zone']

data.head()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58272276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档