重命名DataFrame中的列不适用于我的脚本

kqlmhetl  于 2022-09-18  发布在  Java
关注(0)|答案(1)|浏览(138)
from nsepython import *
import requests
import pandas as pd

res = nse_optionchain_scrapper('HDFC')

def fetch_oi(expiry_dt):
    ce_values = [data['CE'] for data in res['records']['data'] if "CE" in data and data['expiryDate'] == expiry_dt]
    #print(ce_values)

    pe_values = [data['PE'] for data in res['records']['data'] if "PE" in data and data['expiryDate'] == expiry_dt]
    #print(pe_values)

    df_ce = pd.DataFrame(ce_values).sort_values(['strikePrice'])
    df_pe = pd.DataFrame(pe_values).sort_values(['strikePrice'])

    pd.set_option('display.max_columns', None)
    pd.set_option('display.max_row', None)
    #print(df_pe.columns)
    #print(df_pe)

    mini_pe = (df_pe[['strikePrice','change','lastPrice','changeinOpenInterest','openInterest','underlyingValue']])

    mini_pe.rename(columns = {'strikePrice':'STKS', 'change':'CHNG','lastPrice':'LTP', 'openInterest':'OI',          'changeinOpenInterest':'CH OI',  'underlyingValue':'UNDRLNG'}, inplace = True)

    #print(mini_pe.columns)
    print(mini_pe.to_string(index=False))

def main():
    expiry_dt = '29-Sep-2022'
    fetch_oi(expiry_dt)

if __name__ == '__main__':
    main()

我正在试着重命名这些柱子,但我无法联系到这里的错误之处。请帮我查一下。我还翻阅了文档,但无法理解。

Output screenshot这是我的输出屏幕截图...

kqqjbcuj

kqqjbcuj1#

基本上,脚本没有问题,这不是一个错误-所以Pandas基本上是在警告您,您正试图在原始 Dataframe 的副本上执行重命名。有时,这可能会产生意想不到的结果。其中,df_pe是原始 Dataframe 。阅读更多关于Pandas的链分配的内容。要修复它,请使用此命令

mini_pe= df_pe.loc[:,['strikePrice','change','lastPrice','changeinOpenInterest','openInterest','underlyingValue']]

相关问题