python - 用分隔符重塑熊猫数据框列
问题描述
我有以下数据框(带有 2 列-str 的选项卡文件):
id1 id2
g1 ID:05434
g1 ID:05434
g1 NaN
g1 ID:05434|ID:38720|ID:33345
做完之后
df1 = df[df['id2'].notnull()]
df2 = df1.drop_duplicates(['id1','id2'])
我得到了df2,
id1 id2
g1 ID:05434
g1 ID:05434|ID:38720|ID:33345
我的目标是将其扩展为只有 2 列,例如
id1 id2
g1 ID:05434
g1 ID:05434
g1 ID:38720
g1 ID:33345
是否有任何扩展功能?
提前致谢。
解决方案
使用str.split
with stack
,也用于 remove NaN
s DataFrame.dropna
。
编辑:通过 OP 评论被删除,最后重复排序值:
df2 = (df.dropna(subset=['id2'])
.set_index('id1')['id2']
.str.split('|', expand=True)
.stack()
.reset_index(level=1, drop=True)
.reset_index(name='id2')
.sort_values(by=['col1', 'col2'])
.drop_duplicates(['col1','col2']))
print (df2)
id1 id2
0 g1 ID:05434
2 g1 ID:38720
3 g1 ID:33345
推荐阅读
- javascript - discord.js 中的 MySQL
- python - discord.py 错误:IndentationError: unindent 不匹配任何外部缩进级别
- webpack - 使用 Electron 构建基于 webpack 的 svelte 应用程序时如何使用 require()?
- python - sqlite 查询中缺少 len()
- mongodb - 如何使用文档中的 2 个数组映射数组
- bazel - 如何获取目标依赖关系的依赖关系图?
- sql - 如何计算表中具有相同名称的行数?SQL
- mysql - TRANSACTION 中的 LOCK TABLES 不会回滚
- javascript - 查找重复的对象值并动态替换为新的自定义值
- python - 如何从 python 中的嵌套交叉验证中获取 Kappa 和 MCC?