我有这个数据框:
CHROM POS ID 162014 162015 162016
1 1645 M1 0|1:0.96 0|0:0 0|0:0.33
1 23253 M3 1|1:1.97 0|0:0 0|0:0.33
1 29491 M4 1|1:1.97 0|0:0 0|0:0.33
1 30698 M6 0|0:0.03 1|0:1 1|1:1.67
1 43616 M9 0|0:0.03 1|1:2 1|1:1.67
1 53188 M11 1|1:1.97 0|0:0 0|0:0.33
1 53632 M12 1|1:1.97 0|0:0 0|0:0.33
1 57628 M13 1|1:1.97 0|0:0 0|0:0.33
1 59879 M14 0|0:0.03 1|1:2 1|1:1.67
1 64576 M15 0|0:0.03 1|1:2 1|1:1.67
我想知道,如何删除除熊猫中ID,#CHR和POS列以外的所有列中0 | 0、0 | 1、1、1 | 0和1 | 1之后的所有字符和数字,相同就像这张桌子一样
#CHROM POS ID 162014 162015 162016
1 1645 M1 0|1 0|0 0|0
1 23253 M3 1|1 0|0 0|0
1 29491 M4 1|1 0|0 0|0
1 30698 M6 0|0 1|0 1|1
1 43616 M9 0|0 1|1 1|1
1 53188 M11 1|1 0|0 0|0
1 53632 M12 1|1 0|0 0|0
1 57628 M13 1|1 0|0 0|0
1 59879 M14 0|0 1|1 1|1
1 64576 M15 0|0 1|1 1|1
答案 0 :(得分:1)
使用str
访问器获取每个元素的前三个字符。
>>> df.iloc[:, 3:] = df.iloc[:, 3:].apply(lambda s: s.str[:3])
>>> df
CHROM POS ID 162014 162015 162016
0 1 1645 M1 0|1 0|0 0|0
1 1 23253 M3 1|1 0|0 0|0
2 1 29491 M4 1|1 0|0 0|0
3 1 30698 M6 0|0 1|0 1|1
4 1 43616 M9 0|0 1|1 1|1
5 1 53188 M11 1|1 0|0 0|0
6 1 53632 M12 1|1 0|0 0|0
7 1 57628 M13 1|1 0|0 0|0
8 1 59879 M14 0|0 1|1 1|1
9 1 64576 M15 0|0 1|1 1|1