Python pandas DF вопрос: пытается удалить столбец, но ничего не происходит (df.drop) - код также запускается без ошибок - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь удалить столбец с именем Rank, но ничего не происходит. Весь оставшийся код выполняется без проблем, но сам столбец остается в выходном файле. Я выделил часть кода, которая не работает.

def read_csv():

    file = "\mona" + yday+".csv"
    #df=[]
    df = pd.read_csv(save_path+file,skiprows=3,encoding = "ISO-8859-1",error_bad_lines=False)
    return df



# replace . with / in column EPIC
def tickerchange():
    df=read_csv()
    df['EPIC'] = df['EPIC'].str.replace('.','/')
    return df

def consolidate_AB_listings():
    df=tickerchange()
    Aline = df.loc[(df['EPIC'] =='RDSA'),'Mkt Cap (àm)']
    Bline = df.loc[(df['EPIC'] =='RDSB'),'Mkt Cap (àm)']
    df.loc[(df['EPIC'] =='RDSA'),'Mkt Cap (àm)']= float(Aline) + float(Bline)
    df = df.loc[(df.Ind != 'I/E')]
    df = df.loc[(df.Ind != 'FL')]
    df = df.loc[(df.Ind != 'M')]
    df = df.loc[(df.EPIC != 'RDSB')]
    return df  

def ranking_mktcap():
    df = consolidate_AB_listings()
    df['Rank']= df['Mkt Cap (àm)'].rank(ascending=False)
    df = df.loc[(df.Rank != 1)]
    df['Rank1']= df['Mkt Cap (Em)'].rank(ascending=False)
    ## This doesn't seem to work
    df = df.drop(df['Security'], 1)
    return df

def save_outputfile():
    #df = drop()
    df = ranking_mktcap()
    df.to_csv(r'S:\Index_Analytics\UK\Index Methodology\FTSE\Py_file_download\MonitoredList.csv', index=False)
    print("finished")

if __name__ == "__main__":
    main()
    read_csv()
    tickerchange()
    consolidate_AB_listings()
    ranking_mktcap()
    save_outputfile()

Ответы [ 2 ]

1 голос
/ 17 марта 2020

DataFrame.drop () принимает следующее: DataFrame.drop(self, labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise').

Когда вы звоните df = df.drop(df['Security'], 1), он использует df['security'] в качестве меток для удаления. И 1 передается через параметр axis.

Если вы хотите удалить столбец 'Security', вам нужно сделать:

df = df.drop('Security', axis=1)
# this is same as
df = df.drop(labels='Security', axis=1)
# you can also specify the column name directly, like this
df = df.drop(columns='Security')

Примечание: параметр columns= может принимать одну метку (str), как указано выше или может взять список имен столбцов.

0 голосов
/ 17 марта 2020

Попробуйте, заменив

 df = df.drop(df['Security'], 1)

на

df.drop(['Security'],axis=1, inplace=True) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...