python - 根据特定字符串提取列表元素并存储为熊猫数据框
问题描述
我有一个列表,其中包含如下所示的几点:
['Pros:', 'Pros 1', 'Pros 2','Cons:','Cons 1','Cons 2']
我正在尝试使用 2 列创建一个 Dataframe,一个称为Pros
另一个称为Cons
预期输出:
Pros, Cons
Pros 1; Pros 2,Cons 1; Cons 2
我遇到的问题是Pros
并且Cons
在每个列表中都会有所不同,因此我试图将 Cons 之前的所有文本归类为一列,将 Cons 之后的所有项目归类为另一列
解决方案
我会采取另一种方法。用于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]})
推荐阅读
- javascript - 如何验证从文件类型的输入元素中选择的文件类型
- azure-active-directory - 尝试通过 API 访问 SFB
- oracle10g - Oracle 10g 上的浏览器兼容性问题
- asp.net-core - 获取 HTTP POST 并将其转换为 ASP.NET Core 标识的最直接方法是什么?
- bash - sh:2:./ci.sh:语法错误:单词意外
- c# - 使用缓冲区将 byte[] 转换为 Base64 字符串(以避免 OOM)
- c# - vbs到C#的转换,无法获取ScriptingEngine
- android - 如何在数据绑定中使用泛型类的变量?
- python-3.x - 使用 Matplotlib 和 FuncAnimation 为具有不同 FPS 的对象设置动画
- javascript - 根据选择下拉显示或隐藏多个字段 - jquery