跳过列熊猫/多个以逗号分隔的空列表

时间:2018-10-02 19:59:45

标签: python python-3.x pandas

我正在尝试将一些数据帧写入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列并写入{{ 1}}在O列下?换句话说,列E和列O之间应该有空列。

如果这不可能。我认为至少可以多次写'shoe'。有没有办法用[], [], []循环或类似的东西使这些空列表用逗号分隔?

感谢阅读。

4 个答案:

答案 0 :(得分:2)

我认为您应该使用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)]

答案 1 :(得分:1)

这会在shoe之前插入9个空列表,并将鞋子放在O列中

for i in range(9):
    data.insert(-1, [])
dataFrame = pandas.DataFrame(data).transpose()

答案 2 :(得分:0)

使用列表理解:

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

In [2]: ll
Out[2]: [[], [], [], [], []]

答案 3 :(得分:0)

您可以在一系列值上使用Pandas 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