我只是在迭代一个简单的pandas数据框,看起来像这样:
229041189 229041196 229041197 229041200 229041211 229041212 229041216
0 C-T T-C C-T C-T G-T G-T C-T
1 C-T T-C C-T C-T NaN NaN C-T
2 C-T NaN C-T C-T NaN NaN C-T
3 C-T T-C C-T C-T NaN NaN C-T
在一个if循环中,我试图只查看那些不是NaN的值,但它们仍然全部通过我的条件,我不知道为什么会这样。
我的循环是这样的:
for i in column:
if i != 'NaN':
# do something
答案 0 :(得分:1)
首先检查NaN
(缺失值)可以使用pandas.notnull
:
if pd.notnull(i)
我认为您需要stack
通过重塑来创建Series
- NaN
被删除:
print (df.stack())
0 229041189 C-T
229041196 T-C
229041197 C-T
229041200 C-T
229041211 G-T
229041212 G-T
229041216 C-T
1 229041189 C-T
229041196 T-C
229041197 C-T
229041200 C-T
229041216 C-T
2 229041189 C-T
229041197 C-T
229041200 C-T
229041216 C-T
3 229041189 C-T
229041196 T-C
229041197 C-T
229041200 C-T
229041216 C-T
dtype: object
然后value_counts
:
a = df.stack().value_counts().rename_axis('val').reset_index(name='count')
print (a)
val count
0 C-T 16
1 T-C 3
2 G-T 2