2016-01-18 109 views
0

我想从一个特定的.csv文件创建一个可用的熊猫数据框。该文件有一列用于标识行所在的测试类型,两列标识正在测量的设备,其余列包含数据。Python - 熊猫 - 从行条目创建列

输入.csv文件格式如下:

testtype1, device1name, device1info, meas_1, meas_2, meas_3, ... ... , meas_n 
testtype2, device1name, device1info, meas_1, meas_2, meas_3, ... ... , meas_n 
testtype3, device1name, device1info, meas_1, meas_2, meas_3, ... ... , meas_n 
testtype1, device2name, device2info, meas_1, meas_2, meas_3, ... ... , meas_n 
testtype2, device2name, device2info, meas_1, meas_2, meas_3, ... ... , meas_n 
testtype2, device2name, device2info, meas_1, meas_2, meas_3, ... ... , meas_n 
...  ...   ...   ...  ...  ...    ... 

等。我试图让这个数据为这种格式:

devicename deviceinfo testtype1 testtype2 testtype3 
device1name device1info meas_1  meas_1  meas_1 
device1name device1info meas_2  meas_2  meas_2 
device1name device1info meas_3  meas_3  meas_3 
...   ...   ...   ...   ... 
device1name device1info meas_n  meas_n  meas_n 
device2name device2info meas_1  meas_1  meas_1 
device2name device2info meas_2  meas_2  meas_2 
...   ...   ...   ...   ... 

我阅读使用pd.read_csv(filename)文件,但一旦我有我的数据会被卡住。我已经看过使用df.pivot,并且还将数据帧切片与测量结果进行了转置,但是我不知道该从哪里开始。我对Python很新,所以任何帮助将非常感谢!

回答

0

数据透视表将是正确的方式 - 缓慢启动 - 然后增加复杂性。

从您的数据的外观

new_df = pd.pivot_table(orig_dataframe,index=['device1name','device1info'],values=['Col1','Col2']) 

然后,如果您想要做一些numpy的数学要求您将添加一个

,aggfunc=[np.sum,len] 

到pivot_table通话

+0

我想使用'pd.pivot_table()'函数,但它是采用不同测试的每个'meas_n'的均值。我想要做的是为每个'meas_n'创建一个新行,相应地填写“devicename”和“deviceinfo”的列,类似于SQL数据库格式。它似乎没有内置任何东西? – Keegan

+0

我最终通过循环遍历每一行来解决这个问题,使用string.split()作为数据并将其写入到我想要的格式的StringIO对象中。然后我将它传递给read_csv()并以我想要的格式获得数据。 – Keegan