python分析csv文件一节值 不同的个数_如果每行包含不同数量的字段(数量很大),如何正确读取csv文件?...

本文介绍如何使用Python的DictReader处理CSV文件,特别是当每行字段数量不固定时。通过指定header和restkey,可以读取并整理数据。示例代码展示了如何创建DataFrame,并处理行首出现的审查情况。
摘要由CSDN通过智能技术生成

正如所建议的,DictReader也可以按如下方式用于创建行列表。然后可以作为熊猫的框架导入:import pandas as pd

import csv

rows = []

csv_header = ['user', 'item', 'time', 'rating', 'review']

frame_header = ['user', 'item', 'rating', 'review']

with open('input.csv', 'rb') as f_input:

for row in csv.DictReader(f_input, delimiter=' ', fieldnames=csv_header[:-1], restkey=csv_header[-1], skipinitialspace=True):

try:

rows.append([row['user'], row['item'], row['rating'], ' '.join(row['review'])])

except KeyError, e:

rows.append([row['user'], row['item'], row['rating'], ' '])

frame = pd.DataFrame(rows, columns=frame_header)

print frame

这将显示以下内容:user item rating review

0 disjiad123 TYh23hs9 5 I love this phone as it is easy to use

1 hjf2329ccc TGjsk123 3 Suck restaurant

如果审查出现在行的开头,则一种方法是按如下相反的顺序分析行:import pandas as pd

import csv

rows = []

frame_header = ['rating', 'time', 'item', 'user', 'review']

with open('input.csv', 'rb') as f_input:

for row in f_input:

cols = [col[::-1] for col in row[::-1][2:].split(' ') if len(col)]

rows.append(cols[:4] + [' '.join(cols[4:][::-1])])

frame = pd.DataFrame(rows, columns=frame_header)

print frame

这将显示:rating time item user \

0 5 13160032 TYh23hs9 isjiad123

1 3 14423321 TGjsk123 hjf2329ccc

review

0 I love this phone as it is easy to used

1 Suck restaurant

row[::-1]用于反转整行的文本,[2:]跳过行尾,行尾现在位于行首。每一行然后在空格上分开。然后,列表理解会重新反转每个拆分条目。最后rows被附加到first,方法是获取固定的5列条目(现在在开头)。剩下的条目用空格连接起来,作为最后一列添加。

这种方法的好处是,它不依赖于输入数据是完全固定宽度的格式,而且您不必担心所使用的列宽是否随时间变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值