我有一个相当大的 CSV 文件,长这个样子:
我的意图是:
我已经成功地使用单独的.py文件完成了这个操作:
步骤1
步骤2
但我真的很想学习如何在一个 .py 文件中完成所有事情。我尝试了这个:
但是,它并没有按照预期的方式工作,而是给我生成了多个以每个列标题命名的 CSV 文件。
这是因为我在使用单独的 .py 文件时删除了标题行,但在这里我没有这样做吗?我不太确定在分割文件时需要执行什么操作以删除标题。
+---------+---------+
| Column1 | Column2 |
+---------+---------+
| 1 | 93644 |
| 2 | 63246 |
| 3 | 47790 |
| 3 | 39644 |
| 3 | 32585 |
| 1 | 19593 |
| 1 | 12707 |
| 2 | 53480 |
+---------+---------+
我的意图是:
- 添加一个新列
- 在csv的每一行中插入特定值'NewColumnValue'到该列中
- 根据Column1中的值对文件进行排序
- 基于'Column1'的内容将原始CSV拆分为新文件,删除头部信息
+---+-------+----------------+
| 1 | 19593 | NewColumnValue |
| 1 | 93644 | NewColumnValue |
| 1 | 12707 | NewColumnValue |
+---+-------+----------------+
+---+-------+-----------------+
| 2 | 63246 | NewColumnValue |
| 2 | 53480 | NewColumnValue |
+---+-------+-----------------+
+---+-------+-----------------+
| 3 | 47790 | NewColumnValue |
| 3 | 39644 | NewColumnValue |
| 3 | 32585 | NewColumnValue |
+---+-------+-----------------+
我已经成功地使用单独的.py文件完成了这个操作:
步骤1
# -*- coding: utf-8 -*-
import pandas as pd
df = pd.read_csv('source.csv')
df = df.sort_values('Column1')
df['NewColumn'] = 'NewColumnValue'
df.to_csv('ready.csv', index=False, header=False)
步骤2
import csv
from itertools import groupby
for key, rows in groupby(csv.reader(open("ready.csv")),
lambda row: row[0]):
with open("%s.csv" % key, "w") as output:
for row in rows:
output.write(",".join(row) + "\n")
但我真的很想学习如何在一个 .py 文件中完成所有事情。我尝试了这个:
# -*- coding: utf-8 -*-
#This processes a large CSV file.
#It will dd a new column, populate the new column with a uniform piece of data for each row, sort the CSV, and remove headers
#Then it will split the single large CSV into multiple CSVs based on the value in column 0
import pandas as pd
import csv
from itertools import groupby
df = pd.read_csv('source.csv')
df = df.sort_values('Column1')
df['NewColumn'] = 'NewColumnValue'
for key, rows in groupby(csv.reader((df)),
lambda row: row[0]):
with open("%s.csv" % key, "w") as output:
for row in rows:
output.write(",".join(row) + "\n")
但是,它并没有按照预期的方式工作,而是给我生成了多个以每个列标题命名的 CSV 文件。
这是因为我在使用单独的 .py 文件时删除了标题行,但在这里我没有这样做吗?我不太确定在分割文件时需要执行什么操作以删除标题。
g.to_csv('{}.csv'.format(i), header=False, index_label=False)
。header=False
不会写入标题,index_label=False
不会写入没有标题的列(这是数据框的索引)。 - Unatiel