如何仅从数据帧中删除“0”

2024-09-30 10:38:21 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我的数据如下所示:

0                     1               2          3
 1                     0               19          12
 2                     5               0           13
 3                     6               21          0
 4                     7               4           15 

如何删除“0”

我不想删除整行/整列,只想删除值

我希望它看起来像这样:

0                     1               2          3
 1                     5                19           12
 2                     6                21           13
 3                     7                4            15
 

我正在将数据帧从csv文件读入熊猫。 这是我在数据框中读取的内容

df = pd.read_csv('Plate0-s4_R1.csv')
df.fillna(0, inplace=True)

这就是我做最小计算的地方

df = df[df.columns].groupby(lambda x: x, axis=1).min()
df = df.groupby(df[0]).min()
df = df.reset_index()

我在internet上找到的其他解决方案包括删除整列/整行。我不想丢失这些列和行中的其他数据。我只是不想让0干扰我的最小值计算

请进一步澄清。这就是我的数据帧目前的位置

df

“0.0”告诉我们我需要摆脱什么


Tags: 文件csv数据true内容dfreadmin
2条回答

如果您只是想得到最小值,根据上面的注释,用np.nan替换所有的零 原始df(来自您上面的帖子):

df=pd.DataFrame({'1':[0,5,6,7],'2':[19,0,21,4],'3':[12,13,0,15]})

最小计算的温度df:

df_temp=df.replace(0,np.nan)

然后,您可以获取所有列的最小值并保存到新系列:

df_min=df_temp.min()

可以使用等于零作为键对值进行排序。这将把零移到底部,同时保持其他值的顺序(稳定排序)

然后切片数据帧以删除最后N行,其中N是一列中最大的零数

df = pd.DataFrame({1: [0, 5, 6, 7],
                   2: [19, 0, 21, 4],
                   3: [12, 13, 0, 15]
                   })
(df.apply(lambda c: c.sort_values(key=lambda x: x==0).reset_index(drop=True))
   .iloc[:-df.eq(0).sum().max()]
 )

输出:

   1   2   3
0  5  19  12
1  6  21  13
2  7   4  15

相关问题 更多 >

    热门问题