我有一個 csv 檔案,如下所示:
Account Email User_Id User Type Base Role Last Login
123456 [email protected] 111111 inter user 7
7891011 [email protected] 222222 inter user 6
121314 [email protected] 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 的新手。請幫忙
uj5u.com熱心網友回復:
Pythoncsv默認自帶一個模塊
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
這將回傳一個僅包含每行第一個元素的串列,如果它是列名,則可以去掉第一個元素。
uj5u.com熱心網友回復:
您可以嘗試使用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
)
uj5u.com熱心網友回復:
你可以在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。您可以使用以下方法保存結果 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')
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/337206.html
