gpt4 book ai didi

python - 如何在 Pandas 中读取格式错误的宽 csv?

转载 作者:行者123 更新时间:2023-12-01 09:33:11 25 4
gpt4 key购买 nike

我(非常令人惊讶)在 Pandas 中读取以下格式的 csv 时遇到一些困难(这是真实的东西 - 相信我)

enter image description here

如您所见,真实数据是:

  • 宽格式
  • 仅从第 6 行开始
  • B 处有空列

我尝试了以下方法,但没有成功。

my_df = pd.read_csv('P://mypath/bogus_csv.csv', 
skiprows = [0,1,2,3,4],
usecols = ([0]+ range(2,5)))

但是会返回ValueError: Passed header namemismatches usecols并且它根本不是最佳的,因为我已经硬编码了usecol中的列数。

事实上,我可能事先并不知道我有多少列(日期)。

有什么想法吗?谢谢!

编辑:这里是 csv 作为文本(在 sublime text 中):

Title   "text"
Metric Parallel
Date Range 10 Jan 2018 - 11 Apr 2018
Content Web, Online, Fax

Label "10 Jan 2018" "11 Jan 2018" "12 Jan 2018"
"myquery" 70 108 92

这是它在写字板中的显示方式

enter image description here

最佳答案

使用正则表达式空白分隔符,并发布“csv”,您可以尝试:

import pandas as pd

df = pd.read_csv('sample.csv', delimiter=r"\s+", skiprows=5, header=None)
df = df.set_index(0)
df = df.T
df = df.set_index('Label')

通过一些转置和重新索引,给我:

0           myquery
Label
10 Jan 2018 70
11 Jan 2018 108
12 Jan 2018 92

索引标签单元格中有一个烦人的 0,但可能不会妨碍

另一种选择是使用一个简单的空白分隔符,它给出了偏移 NaN,我们必须通过按列拆分来删除它,然后进行串联。不太喜欢这个选项。

df = pd.read_csv('sample.csv', delimiter=" ", skiprows=5, header=None)
df = df.set_index(0)
df = df.T
dfs = []
for col in df.columns:
df_col = df[col]
df_col = df_col.dropna().reset_index(drop=True)
dfs.append(df_col)
df = pd.concat(dfs, 1).sort_index(1).set_index('Label')

关于python - 如何在 Pandas 中读取格式错误的宽 csv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49775840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com