【发布时间】:2015-11-09 15:05:05
【问题描述】:
我有一个如下所示的 CSV 文件:
Names, Size, State, time1, time2,
S1, 22, MD , 0.022, , 523.324
S2, 22, MD , 4.32, , 342.54
S3, 22, MD , 3.54, , 0.32
S4, 22, MD , 4.32, , 0.54
S1, 33, MD , 5.32, , 0.43
S2, 33, MD , 11.54, , 0.65
S3, 33, MD , 22.5, , 0.324
S4, 33, MD , 45.89 , 0.32
S1, 44, MD , 3.53 , 3.32
S2, 44, MD , 4.5 , 0.322
S3, 44, MD , 43.65 , 45.78
S4, 44, MD, 43.54 , 0.321
我不关心 state 列
我的输出文件需要如下所示:
Size , S1` , S2 , S3 , S4
22 , 0.022 , 4.32 , 45.89 , 4.32
33 , 5.32, 11.54 , 22.5, 45.89,
44 , 3.53, 4.5, 43.65, 43.54
3 values, 3 values, 3,values, 3 values
如您所见,输出文件包含不同的标头,这些标头是第一个 csv 文件中的值。 csv 文件按 Size 列排序。换句话说,我想知道哪个时间与每个文件 (S1,S2,S3,S4) 的大小相关联。列的顺序也发生了变化。现在输出文件中第一列中的大小列。最后一行还表示每列中值的总数。
到目前为止我的代码:
import pandas as pd
import numpy as np
import csv
df=pd.read_csv(r'C:\Users\testuser\Desktop\file.csv',usecols=[0,1,2,3,4])
df.columns=pd.MultiIndex.from_tuples(zip(['Names','FileSize','x','y','z'],df.columns)) *#add column headers... (this did not do it correctly)*
df_out=df.groupby('Names','FileSize').count().reset_index() *#suppose to print distinct values*
df_out.to_csv('processed_data_out.csv', columns['Names','FileSize','x','y','z'], header=False,index=False)
我知道我没有使用最后一列 time2,因为我不知道如何添加它以便用户知道什么时间(时间 1 和时间 2)与大小相关联。
【问题讨论】:
标签: python-2.7 csv pandas awk