簡體   English   中英

Python-合並CSV文件中的列

[英]Python - Combining Columns in a CSV file

我正在嘗試創建代碼,這些代碼將采用CSV文件中某些列的數據並將其合並為新的CSV文件。 我被指示使用熊貓,但我不確定自己是否走在正確的軌道上。 我對Python還是很陌生,所以請准備好應對潛在的糟糕代碼。

我想使用data.csv:

Customer_ID,Date,Time,OtherColumns,A,B,C,Cost
1003,January,2:00,Stuff,1,5,2,519
1003,January,2:00,Stuff,1,3,2,530
1003,January,2:00,Stuff,1,3,2,530
1004,Feb,2:00,Stuff,1,1,0,699

並創建一個新的CSV,如下所示:

Customer_ID,ABC
1003,152
1003,132
1003,132
1004,110

到目前為止,我有:

import csv
import pandas as pd

df = pd.read_csv('test.csv', delimiter = ',')
custID = df.customer_ID
choiceA = df.A
choiceB = df.B
choiceC = df.C

ofile  = open('answer.csv', "wb")
writer = csv.writer(ofile, delimiter = ',')
writer.writerow(custID + choiceA + choiceB + choiceC)

不幸的是,所做的全部工作是將每一行加在一起,然后為每一行創建一個CSV,並將它們總和為一行。 我真正的最終目標是在AC列中找到最常出現的值,並使用最常出現的值將每個客戶合並到同一行。 我很難解釋。 我想要帶data.csv並使其如下的東西:

Customer_ID,ABC
1003,132
1004,110

您可以對感興趣的列求和(如果它們的類型是字符串):

In [11]: df = pd.read_csv('data.csv', index_col='Customer_ID')

In [12]: df
Out[12]:
                Date  Time OtherColumns  A  B  C  Cost
Customer_ID
1003         January  2:00        Stuff  1  5  2   519
1003         January  2:00        Stuff  1  3  2   530
1003         January  2:00        Stuff  1  3  2   530
1004             Feb  2:00        Stuff  1  1  0   699

In [13]: res = df[list('ABC')].astype(str).sum(1)  # cols = list('ABC')

In [14]: res
Out[14]:
Customer_ID
1003           152
1003           132
1003           132
1004           110
dtype: float64

要獲取csv,您可以首先使用to_frame (添加所需的列名):

In [15]: res.to_frame(name='ABC')  # ''.join(cols)
Out[15]:
             ABC
Customer_ID
1003         152
1003         132
1003         132
1004         110

In [16]: res.to_frame(name='ABC').to_csv('new.csv')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM