基于某些行值的子集Pandas数据框架



我有一个Pandas数据框架,其中的列是'动态'的(这意味着我不知道列名是什么,直到我从各个数据库检索数据)。

数据帧是单行,看起来像这样:

    Make   Date        Red     Blue     Green     Black     Yellow     Pink     Silver
89  BMW    2016-10-28  300.0   240.0    2.0       500.0     1.0        1.0      750.0

请注意'89'是数据帧中的特定行。

我有以下代码:

cars_bar_plot = df_cars.loc[(df_cars.Make == 'BMW') & (df_cars.Date == as_of_date)]
cars_bar_plot = cars_bar_plot.replace(0, value=np.nan)
cars_bar_plot = cars_bar_plot.dropna(axis=1, how='all')

这可以很好地帮助我创建上述单行数据框架,但是每列中的一些值相对于其他值非常小(例如1.0和2.0),并且它们正在扭曲我用Matplotlib创建的水平条形图。我想摆脱那些小于某个最小阈值(例如3.0)的数字。

知道我该怎么做吗?

谢谢!

更新1

下面这行代码有帮助,但是并不能完全解决问题。

cars_bar_plot = cars_bar_plot.loc[:, (cars_bar_plot >= 3.0).any(axis=0)]

问题在于消除了不需要的列。例如,引用原始数据帧,是否可以修改此代码,使其仅删除"黑色"列右侧

的值小于3.0 的列(假设我们实际上想保留"绿色"列中的值2.0)?

谢谢!

假设您只想保留符合您的标准的行,您可以这样过滤您的数据:

df[df.apply(lambda x: x > 0.5).min(axis=1)]

。只需查看所有符合条件的值,如果至少有一行不符合条件,则立即删除该行。

我的问题的答案如下:

lower_threshold = 3.0
start_column = 5
df = df.loc[start_column:, (df >= lower_threshold).any(axis=0)]

相关内容

  • 没有找到相关文章

最新更新