我有一个 csv 文件,我想用 Python 中的 Pandas 库来读取它。
在此表中,当我们遇到新项目(例如下面示例中的第 1393 或 1654 号项目)时,我们首先有 4 列行元数据,之后有 100 列行作为与该项目关联的真实数据。然后下一个项目又会发生这种情况,依此类推。
表格是这样的:
1,1393,0,0
1,1393,1,22,55,63,...
1,1393,5,32,43,163,...
.
.
.
2,1654,0,0
2,1654,8,95,96,142,...
2,1654,21,31,364,9,...
.
.
.
所以问题是:
- 某些行的大小与其他行不同
- 我们没有标题,因此无法创建标题,因为第一行有 4 个条目,第二行有 100 个条目
- 我的 CSV 文件很大(大约 10G)!
任何有助于我在 Pandas 或任何其他 Python 库中组织数据的建议都将受到高度赞赏。
PS:顺便说一句,有人知道如何在 Tableau 中管理它吗?
最佳答案
当数据不适合现有的 pandas
阅读器时,您可以创建自己的生成器并使用 from_records
填充数据帧。由于缺乏如何关联这些不同项目的详细信息,我编写了一个示例,仅将最新的元数据添加到每行的前面。
import pandas as pd
def my_data_generator(fp):
metadata = []
for line in fp:
data = line.strip().split(',')
if len(data) == 4:
metadata = data
elif not metadata:
raise ValueError("csv file did not start with metadata")
elif data:
yield metadata + data
df = pd.DataFrame.from_records(my_data_generator(open('somefile.csv')))
print(df)
关于python - 在 Pandas 和/或 Tableau 中读取不同行大小的 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35687162/