我正在尝试学习如何选择超过一定数量的缺失数据的行或列。使用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
答案 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)
答案 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')