我是蟒蛇的新手,如果我提出琐碎的问题,请提前抱歉。
我需要从现有的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 .
我几个小时都在苦苦挣扎。任何帮助都将得到高度赞赏! 在此先感谢!!
答案 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]]