[英]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.