我正在尝试将一些数据帧写入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'
。有没有办法用[], [], []
循环或类似的东西使这些空列表用逗号分隔?
感谢阅读。
答案 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中的内容。
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