删除熊猫数据框中每个单元的一部分

时间:2020-06-28 15:37:35

标签: python pandas

我有这个数据框:

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

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