python - 字符串列到DataFrame中的多列
问题描述
我有一个包含多列的 DataFrame:
A B C
a1. b1. r: 200
l: 350
t:600
a2 b2.
a3 b3. r: 400
t: 500
现在我想将 C 列(每个条目由 \n 分隔)分成多个列,如下所示:
A. B. r. l. t
a1 b1 200. 350. 600
a2 b2
a3. b3. 400. 500
我尝试了一些技术,但无法做到。我尝试使用 df.apply 但无法修复 NA 列。有没有办法干净地实现这一目标?
谢谢。
解决方案
使用regex
with的解决方案str.split
:
df = pd.DataFrame(columns=['A', 'B', 'C'], data=[['a1', 'b1', 'r: 200\n l: 350\n t:600'], ['a2', 'b2', ''], ['a3', 'b3', 'r:400\n t:500']])
splitted = df.C.str.split('([r,l,t]{1}?):\s?(\d+)\n?\s?')
filtered = splitted.apply(lambda lst: list(filter(None, lst)))
numerical_values = filtered.apply(lambda lst: pd.Series(index=lst[0::2], data=lst[1::2], dtype=float))
df.join(numerical_values)
推荐阅读
- react-native - 无法更新 MapView 的 onRegionChange() 方法中的状态变量
- python - 平均每四个二维numpy数组python
- search - TFS 升级到 Azure DevOps - 是否可以知道搜索选项的用户是什么
- php - 如何根据某些条件调用不同的 WP 页面?
- qt - QT Creator 构建 qml 应用程序
- r - 如何通过将第一行除以第三行来创建行
- autoit - 如何使用 Autoit 中的窗口信息工具捕获窗口标题
- sql-server - 下划线之间的子字符串 - SQL Server 2008
- c# - 在查询中格式化或插入换行符
- python - 如何显示从 node.js 调用的 python 脚本的输出