我有一个包含以下几点的列表:
['Pros:', 'Pros 1', 'Pros 2','Cons:','Cons 1','Cons 2']
我正在尝试创建一个包含两列的数据框,一列称为Pros
,另一列称为Cons
预期输出:
Pros, Cons
Pros 1; Pros 2,Cons 1; Cons 2
我遇到的问题是Pros
和Cons
在每个列表中都不同,因此我试图将Cons之前的所有文本归为一列,而Cons之后的所有项目归为另一列< / p>
答案 0 :(得分:0)
我会采取另一种方法。使用zip_longest
用None
填充缺失值。这是一种更好的pandas
做法,将使数据的显示/处理更加容易。
import pandas as pd
from itertools import zip_longest
li = ['Pros:', 'Pros 1', 'Pros 2', 'Cons:', 'Cons 1', 'Cons 2', 'Cons 3']
cons_index = li.index('Cons:')
pros, cons = li[1:cons_index], li[cons_index + 1:]
df = pd.DataFrame(zip_longest(pros, cons), columns=['Pros', 'Cons'])
print(df)
输出
Pros Cons
0 Pros 1 Cons 1
1 Pros 2 Cons 2
2 None Cons 3
如果您坚持使用方法,那么
import pandas as pd
li = ['Pros:', 'Pros 1', 'Pros 2', 'Cons:', 'Cons 1', 'Cons 2', 'Cons 3']
cons_index = li.index('Cons:')
pros, cons = ';'.join(li[1:cons_index]), ';'.join(li[cons_index + 1:])
df = pd.DataFrame({'Pros': [pros], 'Cons': [cons]})