Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 跳过以逗号分隔的列/多个空列表_Python_Python 3.x_Pandas - Fatal编程技术网

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

Python 跳过以逗号分隔的列/多个空列表,python,python-3.x,pandas,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列下。是否有方法告诉此数据帧它应该跳过F列到N列,并

我正在尝试将一些数据帧写入csv文件。但是,F到N列应该为空。这是我正在使用的数据帧:

data = [['car'], ['bus'], ['laptop'], ['tv', 'chair'], ['music', 'pop'], ['shoe']]
dataFrame = pandas.DataFrame(data).transpose()
前五个列表分别位于A到E列中。例如,
'laptop'
在C列下。但是,对于当前代码,
'shoe'
在F列下。是否有方法告诉此数据帧它应该跳过F列到N列,并在O列下写入
'shoe'
?换句话说,E列和O列之间应该有空列

如果这不可能。我假设至少可以多次编写
[]、[]、[]、[]
。有没有办法让这些空列表用逗号分隔,并用
for
循环之类的符号


感谢阅读。

使用列表理解:

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

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

我认为您应该使用
字典而不是列表,这样您就可以明确地说明每个列表应该属于哪些列。然后重新编制索引,使其显示在正确的位置

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)
输出: 现在,如果您执行
df.to\u csv('file\u name.csv',index=False,header=False)
则列将按照您在.csv中所需的方式显示

CSV输出:
如果您需要更多的列,那么前702个excel列是:

from itertools import product
l = list(string.ascii_uppercase)+[x+y for x,y in product(string.ascii_uppercase, string.ascii_uppercase)]

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

for i in range(9):
    data.insert(-1, [])
dataFrame = pandas.DataFrame(data).transpose()
您可以在一系列值上使用熊猫:

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

你希望在“shoe”之前有空列,还是只希望列的名称是A、B、C、D、E、O?我只需要将这些数据放在A、B、C、D、E和O列中。此时,你的列没有名称,所以你可以直接命名它们……这与列的命名无关。对于O列,我的意思是csv中的O列csv文件中的O列只是excel为csv文件提供的标签。您的意思是希望列被填充。如果列名称不同,我该如何处理?这意味着不是对OWell的访问。您希望列名是什么?您可以在字典中指定它们的名称(正如我所做的那样),然后将列表传递给reindex,以指定您希望它们出现的顺序。如果我将列名更改为随机名称,则代码无法完成此任务。@jxpython很明显,是的。你不能指望reindex神奇地知道你想要的东西是如何排列的。我的解决方案的关键是在字典中提供列名,然后提供希望它们在
.reindex(some_list)
步骤中出现的顺序。如果在字典中将名称更改为随机名称,还需要提供一个包含这些随机名称的新列表,以便它知道如何对它们进行排序。也许看看
for i in range(9):
    data.insert(-1, [])
dataFrame = pandas.DataFrame(data).transpose()
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