从数据框中转储列数据到python中的列表

时间:2018-08-07 04:38:08

标签: python-3.x pandas numpy

import numpy as np
import pandas as pd


def ExtractCsv( Start,End):
    lsta,lstb,lstc,lstd= list(),list(),list(),list()
    j=0;
    for i in range(Start,End+1):

        f1 = pd.read_csv('C:/Users/sanilm/Desktop/Desktop_backup/opc/csv/Newfolder/fault_data.tar/fault_data/test/healthy'+ str(i)+'.csv');

        listc=list(f1['c'])
        listd=list(f1['d'])
        liste=list(f1['e'])
        listf=list(f1['f'])

        lsta.append(listc)
        lstb.append(listd)
        lstc.append(liste)
        lstd.append(listf)

    print(lsta)
    return f1

f1=ExtractCsv(1,3)

input csv file there are 3 files:
a   b   c   d   e   f
1   10  2901.1  13.915  39.812  6.2647
1   10  2906.1  13.368  42.083  12.945
1   10  2805.3  12.951  42.261  13.398
1   10  3049.2  14.101  43.499  15.237
1   10  2854.8  13.978  42.699  9.1297

预期输出: [2901.1、2906.1、2805.3、3049.2、2854.8、2860.9、2992.9、2867.1、2947.6、2679.4、2891.2、2853.8、2896.4、3114.6、3155.3、2930.2、2810.0、2903.5]

但是输出是 [[2901.1、2906.1、2805.3、3049.2、2854.8],[2860.9、2992.9、2867.1、2947.6、2679.4、2891.2],[2853.8、2896.4、3114.6、3155.3、2930.2、2810.0、2903.5]]

关于如何实现预期输出的任何建议

2 个答案:

答案 0 :(得分:0)

您似乎只想展平结果。

也许试试看: Making a flat list out of list of lists in Python

通过上面的链接(但您可以在其中查找更多信息):

flat_list = [item for sublist in l for item in sublist]

答案 1 :(得分:0)

您可以循环创建list of DataFrames,然后一起创建concat

如果文件中可能有很多列,则将参数usecols添加到read_csv中,以只读指定的列名称:

def ExtractCsv(Start,End):
    dfs = []
    for i in range(Start,End+1):
        path = 'C:/Users/sanilm/Desktop/Desktop_backup/opc/csv/Newfolder/fault_data.tar/fault_data/test/healthy'+ str(i)+'.csv'
        f1 = pd.read_csv(path, usecols=['c','d','e','f'])
        dfs.append(f1)

    return pd.concat(dfs, ignore_index=True)

df = ExtractCsv(1,3)

最后,如果需要提取一些列以列出:

lsta = df['c'].tolist()