我从另一个数据中过滤了一个数据。它们的列和值显然是相同的,但是当我将循环应用到过滤的列和值时,我得到了一个关键错误:0,而在原始的循环中,这是没有问题的。以下是两个数据文件:
原来的一个是:
ISIN ISSUE DATE MATURITY PRICE
0 AR121489 Corp 29/03/2019 29/09/2019 97.314000
1 AR714081 Corp 29/06/2019 29/12/2019 97.014500
2 AT452141 Corp 29/12/2019 29/06/2020 92.959000
3 QJ100923 Corp 29/03/2020 29/09/2020 96.696222使用这个从CSV读取它的方法,我转换数据来过滤它:
df['ISSUE DATE mod'] = df['ISSUE DATE'].apply(lambda x: dt.datetime.strptime(x,'%d/%m/%Y'))
df['MATURITY mod'] = df['MATURITY'].apply(lambda x: dt.datetime.strptime(x,'%d/%m/%Y'))
df['ISSUE DATE mod'] = df['ISSUE DATE mod'].astype('datetime64[ns]').copy()
df['MATURITY mod'] =df['MATURITY mod'].astype('datetime64[ns]').copy()然后我过滤数据以获得这个数据:
fval = dt.date(2019,7,29)
np.datetime64(fecha_valoracion)
df2= df.loc[(tabla_info_bonos['ISSUE DATE mod'] < fval) & (df['MATURITY mod'] > fval)]我得到了这个数据:
ISIN ISSUE DATE MATURITY ISSUE DATE mod MATURITY mod
0 AR121489 Corp 29/03/2019 29/09/2019 2019-03-29 2019-09-29
1 AR714081 Corp 29/06/2019 29/12/2019 2019-06-29 2019-12-29然后,如果我对原始的dataframe执行以下操作,它可以工作,但对过滤的数据不起作用:
maturity = []
for i in range(len(df2['MATURITY'])):
maturities = pd.to_datetime(df2['MATURITY'][i]).date()
maturity.append(maturities)
OUTPUT = KeyError: 0我怀疑问题出在过滤部分,但我不知道如何解决。对此的任何帮助都将是完美的,我将非常感激。
发布于 2018-10-18 10:52:20
我觉得您的for循环在末尾有一个问题。
maturity = []
for i in range(len(df2['MATURITY'])):
maturities = pd.to_datetime(df2['MATURITY'][i]).date()
maturity.append(maturities)请您不要使用上面的代码,请您试试下面这样的代码。
maturity = []
for item in df2['MATURITY']:
maturity.append(pd.to_datetime(item).date())或者你也可以使用列表理解。
maturity = [pd.to_datetime(item).date()for item in df2['MATURITY']]发布于 2018-10-18 10:53:23
重置数据帧的索引。过滤数据具有与原始数据中的索引相对应的索引。
df2 = df2.reset_index(drop= True)
https://stackoverflow.com/questions/52872119
复制相似问题