Python 跳过以逗号分隔的列/多个空列表
我正在尝试将一些数据帧写入csv文件。但是,F到N列应该为空。这是我正在使用的数据帧: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列,并
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