花式索引与大熊猫中的一部分字符串

时间:2018-01-03 18:34:38

标签: python pandas

我有一个像这样的pandas DataFrame:

  Loc WT Var  Change AO     DP    VAF IntEx    Upstream  Downstream Individual
  0  10  A   T  C>T  40  30000  0.003  Exon  ATGCTCGTAG  AGTCGATCGT          1
  1  10  A   T  C>T  40  30000  0.003  Exon  ATGCTCGTAG  AGTCGATCGT          1
  2  10  A   T  C>T  40  30000  0.003  Exon  ATGCTCGTAG  AGTCGATCGT          1
  3  10  A   T  C>T  40  30000  0.003  Exon  ATGCTCGTAG  AGTCGATCGT          1

我正在尝试选择DataFrame的一部分,其中'Downstream'列中字符串的第一个字母是特定字母,但是当我尝试使用以下内容执行此操作时,我遇到了一个键错误:

a = allVariants[allVariants['Downstream'[0] == 'G']]

1 个答案:

答案 0 :(得分:1)

您正在寻找的条件是 -

df[df.Downstream.str[0].eq('G')]

或者,

df[df.Downstream.str.startswith('G')]

示例数据 -

df

   Loc WT Var Change  AO     DP    VAF IntEx    Upstream  Downstream  \
0   10  A   T    C>T  40  30000  0.003  Exon  ATGCTCGTAG  AGTCGATCGT   
1   10  A   T    C>T  40  30000  0.003  Exon  ATGCTCGTAG  AGTCGATCGT   
2   10  A   T    C>T  40  30000  0.003  Exon  ATGCTCGTAG  GTCGATCGTA   
3   10  A   T    C>T  40  30000  0.003  Exon  ATGCTCGTAG  GTCGATCGTA   

   Individual  
0           1  
1           1  
2           1  
3           1 

df[df.Downstream.str[0].eq('G')]

   Loc WT Var Change  AO     DP    VAF IntEx    Upstream  Downstream  \
2   10  A   T    C>T  40  30000  0.003  Exon  ATGCTCGTAG  GTCGATCGTA   
3   10  A   T    C>T  40  30000  0.003  Exon  ATGCTCGTAG  GTCGATCGTA   

   Individual  
2           1  
3           1  

工作原理 -

  1. Downstream是一个字符串列。您可以使用.str访问者访问第一个字符 - df.Downstream.str[0]

  2. 使用'G'eq将此值与==进行比较,以获取布尔值掩码。

  3. 最后使用掩码索引到df

  4. 或者,调用.str.startswith会将第一个字符与传递的字符('G')进行比较,以返回类似于第一种情况的布尔掩码。