gpt4 book ai didi

python - 在数据框中拆分多列

转载 作者:太空宇宙 更新时间:2023-11-04 01:59:37 27 4
gpt4 key购买 nike

我有一个数据框,我想将第 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

问题与“拆分一列”不相似,请帮忙。

最佳答案

您可以通过将转换后的字符串拆分为带有 concat 的列表来在列中创建 MultiIndex一起加入:

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

关于python - 在数据框中拆分多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56002127/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com