Пропустить столбцы панд / несколько пустых списков через запятую - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь записать некоторый кадр данных в файл CSV.Однако столбцы с F по N должны быть пустыми.Я использую этот фрейм данных:

data = [['car'], ['bus'], ['laptop'], ['tv', 'chair'], ['music', 'pop'], ['shoe']]
dataFrame = pandas.DataFrame(data).transpose()

Первые пять списков располагаются в столбцах от A до E соответственно.Например, 'laptop' идет под столбцом C. Однако с текущим кодом 'shoe' идет под столбцом F. Есть ли способ сообщить этому dataFrame, что он должен пропустить столбцы F в N и записать 'shoe' в столбце O?Другими словами, между столбцами E и O должны быть пустые столбцы.

Если это невозможно.Я предположил, что, по крайней мере, можно написать [], [], [] много раз.Есть ли способ сделать эти пустые списки разделенными запятыми с циклом for или что-то?

Спасибо за чтение.

Ответы [ 4 ]

0 голосов
/ 02 октября 2018

Вы можете использовать Панд insert() в диапазоне значений:

import string
alphabet = string.ascii_uppercase

[dataFrame.insert(i, f"{alphabet[i]}", '') for i in range(5,14)]

dataFrame
      0     1       2      3      4 F G H I J K L M N     5
0   car   bus  laptop     tv  music                    shoe
1  None  None    None  chair    pop                    None
0 голосов
/ 02 октября 2018

Я думаю, что вы должны работать с dictionary вместо списка, так что вы можете явно указать, в какие столбцы должен входить каждый список.Затем переиндексируйте, чтобы они отображались в правильном положении.

import pandas as pd
import string

data = {'A': ['car'], 'B': ['bus'], 'C': ['laptop'], 
        'D': ['tv', 'chair'], 'E': ['music', 'pop'], 'O':['shoe']}
df = (pd.DataFrame.from_dict(data, orient='index')
        .reindex(list(string.ascii_uppercase))
        .truncate(after='O', axis=0).T)

Вывод:

      A     B       C      D      E    F    G    H    I    J    K    L    M    N     O
0   car   bus  laptop     tv  music  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  shoe
1  None  None    None  chair    pop  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  None

Теперь, если вы сделаете df.to_csv('file_name.csv', index=False, header=False), столбцы будут такими, как вы хотите в вашем .csv.

CSV Вывод:

car,bus,laptop,tv,music,,,,,,,,,,shoe
,,,chair,pop,,,,,,,,,,

Если вам когда-либо понадобится еще больше столбцов, то первые 702 столбца Excel будут:

from itertools import product
l = list(string.ascii_uppercase)+[x+y for x,y in product(string.ascii_uppercase, string.ascii_uppercase)]
0 голосов
/ 02 октября 2018

Вставляет 9 пустых списков перед shoe, помещая башмак в столбец O

for i in range(9):
    data.insert(-1, [])
dataFrame = pandas.DataFrame(data).transpose()
0 голосов
/ 02 октября 2018

Использование списка понимания:

In [1]: ll = [[] for x in range(5)]

In [2]: ll
Out[2]: [[], [], [], [], []]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...