2
我有一个df在下面的格式约70000列和540行。所有值都是0.0,0.5或1.0。删除列数值满足条件(大熊猫)
VAR 1_139632_G 1_158006_T 1_172595_A 1_564650_A 1_564652_G \
SRR4216489 0.5 0.5 0.5 0.5 0.5
SRR4216786 0.5 0.5 0.5 0.5 0.5
SRR4216628 0.5 0.0 1.0 0.0 0.0
SRR4216456 0.5 0.5 0.5 0.5 0.5
SRR4216393 0.5 0.5 0.5 0.5 0.5
我想删除'0.5'值的数量只比行数少1的所有列。到目前为止,我尝试过;
total_samples = len(df.index) # Gets the number of rows
df_col_05 = df[df == 0.5].count() # returns a df with column-wise counts
df_col_05 = df_col_05.where(df_col_05 < (total_samples-1)) #replaces with Nan where the condition isn't met
我要的是我原来的DF把所有的cols去除其中df_col_05的值> =(total_samples-1),所以基本上去除地方“df_col_05”有一个NaN的,但我不知道该怎么办这个?
我敢肯定,这应该比自己多一点大熊猫经验的人很容易(我开始前几天)
大!解决它 - 非常感谢!因为我是熊猫新手,你是否介意澄清代码的几个小部分在做什么。这是“df.loc [:,”使它指向同一时间的所有列和所有行?我认为它需要一个大小匹配的布尔数组与共享索引,这是'm'进来的地方? – user3062260
是的,确切地说。经典的布尔索引更简单,并通过类似'df = df [df ['col'] <5]'的布尔掩码来移除行。但是为了移除需要loc的列,首先':'表示所有行,然后布尔掩码根据条件删除列。并且需要与df相同的掩码大小,否则会引发错误。所以祝大家好运,如果需要更多解释,请告诉我。愉快的周末! – jezrael