【发布时间】:2016-10-30 21:57:46
【问题描述】:
我有一个 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 “Black”列右侧的列(假设我们真的要在“Green”列中保留 2.0 的值吗)?
谢谢!
【问题讨论】:
-
你想去掉列还是行?为什么不在单独的条形图中绘制每一列?
-
@amyrit - 我想去掉列(因为我只有一行开头)。例如,我在数据框中大约有 30 列。但是,有些列的值可以忽略不计,所以我想去掉这些值,并且只有超过某个阈值的值。