如何在pandas中切片DataFrame,包括行和列切片

时间:2018-02-27 20:51:53

标签: python pandas

我是蟒蛇的新手,如果我提出琐碎的问题,请提前抱歉。

我需要从现有的DataFrame创建一个DataFrame。我的新df将从用户那里获取输入,并应返回一个特定的新数据框。在我的原始数据中,我有5列股票信息: '打开','关闭','高','低'和'卷'以及'时间戳'我的专栏 已经正确转换为日期时间。

我的用户可以选择选择5个数据列中的一个或多个(即'打开','关闭','高',&# 39;低和''),自动收报机名称和一系列优选日期。 (我用自动收报机名称和时间成功了)  this is my output so far 现在我需要创建一个df,它有另一个列 - '数据类型',它可以获取用户的请求,所以我的输出看起来像是这样的:

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

如果用户要求仅查看'打开'而且'卷'

之间的HP值
2018-02-23  to 2018-02-26 .

我几个小时都在苦苦挣扎。任何帮助都将得到高度赞赏! 在此先感谢!!

3 个答案:

答案 0 :(得分:0)

首先,要小心,因为“open”在python中有其自己的含义。确保使用引号将其视为字符串。

如果您只想要列['打开','关闭'],您可以执行return_df = df[['open','close']]

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

希望这有帮助。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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]]