В настоящее время у меня есть dataframe следующим образом, и все, что я хочу сделать, это просто заменить строки в Maturity
с помощью только числа внутри них. Например, я хочу заменить FZCY0D
на 0
и так далее.Замена строк в столбце Dataframe с номером в строке
Date Maturity Yield_pct Currency
0 2009-01-02 FZCY0D 4.25 AUS
1 2009-01-05 FZCY0D 4.25 AUS
2 2009-01-06 FZCY0D 4.25 AUS
Мой код выглядит следующим образом, и я попытался заменить эти строки с числами, но это приводит к ошибке AttributeError: 'Series' object has no attribute 'split'
в строке result.Maturity.replace(result['Maturity'], [int(s) for s in result['Maturity'].split() if s.isdigit()])
. Поэтому я стараюсь понять, как это сделать.
from pandas.io.excel import read_excel
import pandas as pd
import numpy as np
import xlrd
url = 'http://www.rba.gov.au/statistics/tables/xls/f17hist.xls'
xls = pd.ExcelFile(url)
#Gets rid of the information that I dont need in my dataframe
df = xls.parse('Yields', skiprows=10, index_col=None, na_values=['NA'])
df.rename(columns={'Series ID': 'Date'}, inplace=True)
# This line assumes you want datetime, ignore if you don't
#combined_data['Date'] = pd.to_datetime(combined_data['Date'])
result = pd.melt(df, id_vars=['Date'])
result['Currency'] = 'AUS'
result.rename(columns={'value': 'Yield_pct'}, inplace=True)
result.rename(columns={'variable': 'Maturity'}, inplace=True)
result.Maturity.replace(result['Maturity'], [int(s) for s in result['Maturity'].split() if s.isdigit()])
print result
Параметр 'раздвоение() 'для отдельной строки; он возвращает список строк, разбитых пробелом. – chrisaycock