如何在包含行和列切片的pandas中切片数据帧

2024-06-16 10:41:00 发布

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

我是python的新手,如果我要提出一些琐碎的问题,请提前向您道歉。在

我需要从现有的数据帧创建一个数据帧。我的新df将接受用户的输入,并应返回一个特定的新数据帧。在我的原始数据中,我有5列股票信息: ‘open’、‘close’、‘high’、‘low’和‘volume’,以及一个‘timestamp’列 已正确转换为datetime。在

我的用户可以选择5个数据列中的一个或多个(即“打开”、“关闭”、“高”、“低”和“音量”)、股票代号和一系列优选日期。(我用股票代号和时间成功了) this is my output so far 现在我需要创建一个df,它有另一个列-“Data Type”,它可以获得用户的请求,因此我的输出应该看起来,例如,如下所示:

 timestamp      ticker_name    data type      
2018-02-26         HP            67.35
2018-02-23         HP            701271

如果用户要求只查看HP的“打开”和“音量”值

^{pr2}$

我已经挣扎了好几个小时了。任何帮助将不胜感激! 提前谢谢!!在


Tags: 数据用户信息dfclose原始数据opentimestamp
3条回答

这是数据帧的一个简单部分:

s = "2018-01-17"
e = "2018-02-24"
_type = "open"
ticker = "HP"
df[(df.index >= s) & (df.index <= e) & (df.ticker_name == ticker)][["ticker_name",_type]]

你会想要一些东西的组合。IMO最简单的方法是将Timestamp列设置为索引,这样就可以使用时间戳切片。然后使用loc来完成剩下的工作。在

df.set_index('Timestamp')[start:end].loc[df.Ticker == 'HP', ['open', 'volume']]

首先,要小心,因为“open”在python中有自己的含义。一定要用引号把它当作一个字符串来处理。在

如果您只想要列['open','close'],您可以使用return_df = df[['open','close']]。在

如果您只想要时间戳在2018-02-23到2018-02-26之间的行,可以执行return_df = df[(df.timestamp >= '2018-02-03') & (df.timestamp <= '2018-02-26')]。在

希望这有帮助。在

相关问题 更多 >