Как создать DataFrame одного столбца из списка, где первым элементом является имя столбца в Python - PullRequest
0 голосов
/ 24 мая 2018

У меня есть данные ниже в CSV, и я пытаюсь создать кадр данных из 1 столбца, выбирая каждый столбец из CSV за один раз.

sv_m1   rev     ioip    
0       15.31   40      
0       64.9    0       
0       18.36   20      
0       62.85   0       
0       10.31   20      
0       12.84   10      
0       69.95   0       
0       32.81   20  

Список, который я получаю, первыйзначение - это имя столбца, а остальные - значения.

input_file = open('df_seg_sample.csv', 'r')
c_reader = csv.reader(input_file, delimiter=',')
#Read column
column = [x[1] for x in c_reader]
label = column[0]
column = column[1:]
df_column = pd.DataFrame.from_records(data = column,columns = label)

Однако это вызывает ошибку:

  TypeError: Index(...) must be called with a collection of some kind, 'sv_m1' was passed

ядро ​​фактически является именем столбца.

Как можноЯ создаю этот df?Имя столбца df будет первым элементом в списке, а все остальные элементы в списке будут значениями столбцов.

Причина, по которой pandas.read_csv не используется, заключается в следующем: кадр данных огромен и занимает много местамного памяти.Поэтому я хочу прочитать в столбце за раз, сделать некоторую обработку и записать его в другой CSV.

1 Ответ

0 голосов
/ 24 мая 2018

Я думаю, нужно read_csv здесь с параметром usecols для второго столбца фильтра:

df = pd.read_csv('df_seg_sample.csv', usecols=[1])
print (df)
     rev
0  15.31
1  64.90
2  18.36
3  62.85
4  10.31
5  12.84
6  69.95
7  32.81

Но если вы хотите использовать ваше решение, необходимо добавить [] для одного элементасписок только для имени столбца и использовать DataFrame contructor:

data = [x[1] for x in c_reader]
print (data)
['rev', '15.31', '64.9', '18.36', '62.85', '10.31', '12.84', '69.95', '32.81']

df = pd.DataFrame(data[1:], columns=[data[0]])
print (df)
     rev
0  15.31
1   64.9
2  18.36
3  62.85
4  10.31
5  12.84
6  69.95
7  32.81
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...