我有一个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)]
谢谢!
假设您只想保留符合您的标准的行,您可以这样过滤您的数据:
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)]