读取csv文件中每列的第一个元素,然后读取整行



我有一个csv文件,像这样:

Account     Email       User_Id     User Type   Base Role   Last Login
123456  x@proton.com    111111         inter      user         7
7891011 y@proton.com    222222         inter      user         6
121314  z@proton.com    333333         inter      user         5

,还有50个这样的行。每个帐户可以有多个用户。而且同一个账户可以在文件中多次出现。我必须为每个帐户创建一个新的csv文件。对于每个帐户,我必须选择整个行并复制其内容。我该怎么做呢?如何选择:

for each account number
if a csv file for this account does not exist already
create a new file
copy the entire now and paste it in the new csv file

我可以这样创建一个新的csv文件:

with open("test.csv") as fp

,但我被困在我如何去选择每个帐号,然后复制和粘贴该行的内容在一个新的文件。我是Python的新手。请帮助

你可以在python中使用pandas

import pandas as pd

如果你有DataFrame ->它好

如果没有,可以使用这一行将CSV转换为DataFrame

df = pd.read_csv('your_csv_file.csv')

现在你可以像这样使用DataFrame函数来选择你的数据。

new_df = df.loc[df['Account'] == 123456]

new_df也是一个数据框架。您可以使用以下命令保存结果DataFrame:

new_df.to_csv('results.csv')

您可以使用以下代码对每个帐号执行此操作:

for i in df['Account'] :
new_df = df.loc[df['Account'] == i]

# you can use list of file path for saving results   
new_df.to_csv('results.csv')

Python默认自带csv模块

import csv
def get_firsts(csvfile, skip_first=True):
with open(csvfile, 'r') as f:
data = csv.reader(f, delimiter=',')
if skip_first:
_ = next(data)
firsts = [row[0] for row in data]
return firsts

这将返回一个仅包含每行第一个元素的列表,如果第一个元素是列名,则可以去掉第一个元素。

您可以尝试使用convtools库,它提供了许多数据处理原语,包括聚合和CSV文件的帮助器:

from convtools import conversion as c
from convtools.contrib.tables import Table
dialect = Table.csv_dialect(delimiter="t")
# read the input file
table = Table.from_csv("input_1.csv", header=True, dialect=dialect)
# remember the header
header = table.columns
# prepare a converter to group by first column (we could work with dicts, but
# it is slower), aggregate by storing rows in arrays
converter = (
c.group_by(c.item(0))
.aggregate({"account": c.item(0), "rows": c.ReduceFuncs.Array(c.this())})
.gen_converter()
)
# perform aggregation
data_by_accounts = converter(table.into_iter_rows(list))
# write files
for data in data_by_accounts:
Table.from_rows(data["rows"], header=header).into_csv(
"account_{}.csv".format(data["account"]), dialect=dialect
)

相关内容

  • 没有找到相关文章

最新更新