python - 拆分数据框中的几列
问题描述
我有一个数据框,我想将第 3 列中的字符串拆分到最后一列,每列分为两列,并且标题保留在第一个拆分列中。这是数据框:
Sample Pop a1 a10 a100
F295 Pesche AC AT AA
F296 Pesche GT CG AC
F297 Pesche AA GG TT
F298 Pesche AC AG CG
这是我想要的数据框,从第 3 列拆分为带有字符串的两列(制表符分隔):
Sample Pop a1 a10 a100
F295 Pesche A C A T A A
F296 Pesche G T C G A C
F297 Pesche A A G G T T
F298 Pesche A C A G C G
这个问题与“拆分一列”的问题不相似,请帮忙。
解决方案
您可以通过将转换后的字符串拆分为带有for joinMultiIndex
的列表的值来创建列:concat
df1 = df.set_index(['Sample','Pop'])
comp = [pd.DataFrame(df1[x].apply(list).values.tolist(), index=df1.index) for x in df1.columns]
df2 = pd.concat(comp, axis=1, keys=df1.columns)
print (df2)
a1 a10 a100
0 1 0 1 0 1
Sample Pop
F295 Pesche A C A T A A
F296 Pesche G T C G A C
F297 Pesche A A G G T T
F298 Pesche A C A G C G
如果需要避免MultiIndex
首先通过 f 字符串连接列名以避免重复的列名,然后DataFrame.reset_index
:
df2.columns = [f'{a}_{b}' for a, b in df2.columns]
df2 = df2.reset_index()
print (df2)
Sample Pop a1_0 a1_1 a10_0 a10_1 a100_0 a100_1
0 F295 Pesche A C A T A A
1 F296 Pesche G T C G A C
2 F297 Pesche A A G G T T
3 F298 Pesche A C A G C G
推荐阅读
- javascript - 防止功能在第一个条件满足时停止
- apache2 - 如何仅通过 URL 从 apache 服务器下载完整目录
- group-by - SQL 是否有办法在不将组压缩成单行的情况下对行进行分组?
- angular - Webpack/Angular CLI - 如何在 HTML 中嵌入脚本而不是引用它们?
- spring - java.lang.ClassCastException:java.util.concurrent.FutureTask 无法转换为 com.model.Employee - Spring Batch Async
- google-apps-script - Google Apps 脚本递归调度触发器
- c# - .NET Core 发布编译错误
- java - 如何直接从 Java 调用 esql/c 程序
- wix - 如何使用 wix 3.11 burn 检测 .Net Framework 4.7.2
- python - GLTF在python中显示纹理