如何在Pandas中选择超过一定数量的缺失数据的行/列?

时间:2016-11-16 22:13:15

标签: python pandas

我正在尝试学习如何选择超过一定数量的缺失数据的行或列。使用value_counts,我可以找到满足条件的列,但我无法弄清楚如何以int形式检索索引,以便我可以从数据框中访问和删除相应的列。

如何在int中转换/检索索引?并且,有更简单/更简单的方法吗?

  df3 = pandas.DataFrame([[1,6.5,3],[1,'NA','NA'],[3,'NA','NA'],['NA',6.5,'NA']])
    df3_value_counts = df3.apply(pandas.value_counts).fillna(0).ix['NA']
    df3_missing_data_index = df3_value_counts[df3_value_counts > 2].index

2 个答案:

答案 0 :(得分:5)

首先,您使用代表for device_index in range(total_devices): slave_address = device_index+1 offset = device_index * 10 for i in range(registers_per_device): register = offset + i if i==0 : values = ('h', register, 85) elif i==1 : values = ['h', register, 170] elif i==2 : values = ['h', register, 34] elif i==3 : values = ['h', register, 1] elif i==4 : values = ['h', register, 0] elif i==5 : values = ['h', register, 200] elif i==6 : values = ['h', register, 200] elif i==7 : values = ['h', register, slave_address] elif i==8 : values = ['h', register, 0] elif i==9 : values = ['h', register, 0] c.execute('''INSERT INTO deneme(type, index, value) VALUES(?,?,?)''', values) conn.commit()

的内容会更好
NaN

然后你可以使用内置方法做你想做的事情

df3 = df3.replace('NA', np.nan).astype(float)

enter image description here

答案 1 :(得分:0)

这是一种方法 -

df3.columns[(df3.values == 'NA').sum(0) > 2]

或者可能有点慢,但紧凑一个 -

df3.columns[(df3 == 'NA').sum(0) > 2]

示例运行 -

In [292]: df3
Out[292]: 
    0    1   2
0   1  6.5   3
1   1   NA  NA
2   3   NA  NA
3  NA  6.5  NA

In [293]: df3.columns[(df3.values == 'NA').sum(0) > 2]
Out[293]: Int64Index([2], dtype='int64')