python - 如何绘制从不同列获取值的 Matplotlib 图表
问题描述
这是我的数据框
Order Time Profit
0 1 106 NaN
1 1 111 -296.0
2 2 14 NaN
3 2 16 -296.0
4 3 62 NaN
.. ... ... ...
335 106 32 -297.6
336 107 44 NaN
337 107 44 138.0
338 108 58 NaN
339 108 63 -303.4
所以我希望它工作的方式是绘制一个图表,其中 X 是时间,Y 是绝对价格(正或负),所以我们需要有 2 个柱。现在,时间不应该来自同一行,而是来自具有相同订单号的第一行。
例如。-296.0 将在时间 106 下,而不是 111,因为 106 是 Order nr.1 下的第一个。我们将如何做这样的事情?
到目前为止,这是我的代码:
data = pd.read_csv(filename)
df = pd.DataFrame(data, columns = ['Order','Time','Profit']).astype(str)
#turns time column into hours of week
df['Time'] = df['Time'].apply(lambda x: findHourOfWeek(x))
df['Profit'] = df['Profit'].astype(float)
解决方案
如果您更想依赖数据表中的位置,您也可以这样做:
plot_df = pd.DataFrame()
plot_df["Order"] = df.Order.unique()
plot_df["Profit"] = list(df.groupby("Order").nth(-1)["Profit"])
plot_df["Time"] = list(df.groupby("Order").nth(0)["Time"])
但是,如果您想要时间的最小值,您最好使用 Arne 提供的解决方案,因为它会更安全和正确(前提是每个订单号只有一个利润值)。
推荐阅读
- node.js - 在没有 Firefox 跟踪器阻止的情况下嵌入 Facebook 帖子
- protractor - 我们可以在量角器中的测试运行之间更改多重功能吗
- git - 创建一个分支并使用不同的存储库分支对其进行跟踪
- php - 使用基本授权作为中间件 PSR-7 PSR-15
- android - Kotlin ArrayAdapter 错误:不能使用提供的参数调用以下函数
- airflow - 如何在 systemd 中使用 Airflow 调度程序?
- python - 如何在结构化主题建模 R-package 中绘制文档主题分布?
- node.js - 是否可以在 `npm start` 上的不同 url 上提供 react 应用程序
- ios - iOS 12 中的 UIButton 图像偏移
- java - 是否可以在多个 websocket 流上订阅 websocket 会话并控制订阅