- hosts: localhost
gather_facts: False
vars:
message: "\"Role name 'mgmt-ALERTPUBLISHER-uuid-placeholder' is not compliant. Use 'mgmt-ALERTPUBLISHER-b7d445b08a96e7f19ff0ff005686cddd', or do not use a name of the format <service name>-<roletype>-<arbitrary value>.\""
pre_tasks:
- debug:
msg: "{{ message | regex_replace('^.*ALERTPUBLISHER-(?P<uuid>.{32}).*$', '\\g<uuid>') }}"
我有以上代码从quandl获取数据,它给出Date,Open High,Low,Adj Close,Close data
获取此数据后,我想将第1行(不是索引,数据行)删除到第10行,但使用上面给出的drop函数没有任何效果,它提供的数据与我们从quandl接收的数据相同。我希望专家可以用干净的代码来帮助我实现这个目标。请给我python3.6的代码
PLAY [localhost] *********************************************************************************************************************************************************************************************************************************************************************************************************************************************************
TASK [debug] *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
"msg": "b7d445b08a96e7f19ff0ff005686cddd"
}
PLAY RECAP ***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0
这是我在跌落功能之前和之后获得的数据;我希望日期15-06-2017到23-06-2017完整的行数据被删除,df只存储27,28行数据,在python3.6中完成它的有效方法是什么
答案 0 :(得分:2)
我认为如果需要按位置选择,则需要按iloc
选择数据;如果需要选择超出范围的日期,则需要boolean indexing
df = df.iloc[7:]
print (df)
Open High Low Adj Close Close
Date
2017-06-27 135.05 135.55 130.8 134.55 134.4
2017-06-28 134.10 136.80 132.5 136.55 136.3
df = df[(df.index > '2017-06-23') | (df.index < '2017-06-15')]
print (df)
Open High Low Adj Close Close
Date
2017-06-27 135.05 135.55 130.8 134.55 134.4
2017-06-28 134.10 136.80 132.5 136.55 136.3
difference
或isin
的解决方案:
df = df.loc[df.index.difference(pd.date_range('2017-06-15','2017-06-23'))]
print (df)
Open High Low Adj Close Close
2017-06-27 135.05 135.55 130.8 134.55 134.4
2017-06-28 134.10 136.80 132.5 136.55 136.3
df = df[~df.index.isin(pd.date_range('2017-06-15','2017-06-23'))]
print (df)
Open High Low Adj Close Close
Date
2017-06-27 135.05 135.55 130.8 134.55 134.4
2017-06-28 134.10 136.80 132.5 136.55 136.3
但如果真的需要drop
:
df = df.drop(df.loc['2017-06-15':'2017-06-23'].index)
print (df)
Open High Low Adj Close Close
Date
2017-06-27 135.05 135.55 130.8 134.55 134.4
2017-06-28 134.10 136.80 132.5 136.55 136.3
答案 1 :(得分:0)
您可以使用between
start_date = pd.to_datetime("15-06-2017")
end_date = pd.to_datetime("23-06-2017")
df[~df.reset_index().Date.between(start,end)]
输出
Date Open High Low Adj_Close Close
7 2017-06-27 135.05 135.55 130.8 134.55 134.4
8 2017-06-28 134.10 136.80 132.5 136.55 136.3