在python中读取由多个表组成的复杂csv
我尝试用python读取.csv文件,它会显示以下标题: 日期、视频 12.11.2020,https://link_to_video ID,“家长ID”、作者、日期、喜好、评论 一些数据 日期、视频 12.11.2020,https://link_to_video ID,“家长ID”、作者、日期、喜好、评论 等等 它有“,”分隔符,但多个标题让我大吃一惊。在python中读取由多个表组成的复杂csv,python,csv,Python,Csv,我尝试用python读取.csv文件,它会显示以下标题: 日期、视频 12.11.2020,https://link_to_video ID,“家长ID”、作者、日期、喜好、评论 一些数据 日期、视频 12.11.2020,https://link_to_video ID,“家长ID”、作者、日期、喜好、评论 等等 它有“,”分隔符,但多个标题让我大吃一惊。 浏览每一行的一个方法是,如果row='Date and video'跳过这一行和下一行。但这似乎不是真正有效的方法。如果您有任何想法,我将
浏览每一行的一个方法是,如果row='Date and video'跳过这一行和下一行。但这似乎不是真正有效的方法。如果您有任何想法,我将不胜感激。谢谢 我用效率不高的代码解决了这个问题,但它成功了。 以下是解决方案:
import pandas as pd
import codecs
csv_reader = codecs.open( "results.csv", "r", "utf_8_sig" )
line_count = 0
video_id = []
video_links = []
rows = []
for row in csv_reader:
if 'Date,Video' in row:
video_id.append(line_count)
line_count+=1
rows.append(row)
video_len = []
for i in range(1, len(video_id)):
video_len.append([video_id[i-1]+2, video_id[i]])
dfs = []
header = ['ID', '"Parent Id"', 'Author', 'Date', 'Likes', 'Comment']
for i in range(len(video_len)):
video_raw_ds = []
videolink = rows[start-1].split(',')[1][:-2]
start = video_len[i][0]
end = video_len[i][1]
for j in range(start, end):
if j == start:
continue
row = rows[j]
if len(row) <= 5:
drop_counter += 1
else:
row = row.split(',')
text = ''.join(row[5:]).strip('"')
row = row[:5]
row.append(text)
if len(row) <=5: video_raw_ds[-1][-1] += text
else: video_raw_ds.append(row)
tmp_df = pd.DataFrame(video_raw_ds, columns=header)
tmp_df['videolink'] = videolink
dfs.append(tmp_df)
dataset = pd.concat(dfs, axis=0)
dataset.to_csv('formatted.csv')
将熊猫作为pd导入
导入编解码器
csv\u reader=codecs.open(“results.csv”、“r”、“utf\u 8\u sig”)
行计数=0
视频_id=[]
视频链接=[]
行=[]
对于csv_读取器中的行:
如果第行为“日期,视频”:
视频\u id.append(行\u计数)
行计数+=1
行。追加(行)
视频长度=[]
对于范围内的i(1,len(视频_id)):
视频长度附加([video\u id[i-1]+2,video\u id[i]]))
dfs=[]
header=['ID','Parent ID','Author','Date','Likes','Comment']
对于范围内的i(len(video_len)):
视频\u原始\u ds=[]
videolink=行[start-1]。拆分(',)[1][:-2]
开始=视频长度[i][0]
完=视频短片[i][1]
对于范围内的j(开始、结束):
如果j==开始:
持续
行=行[j]
if len(世界其他地区)