关键错误:0,数据帧从另一个数据帧过滤

Posted

技术标签:

【中文标题】关键错误:0,数据帧从另一个数据帧过滤【英文标题】:Key error: 0 with dataframe filtered from another dataframe 【发布时间】:2019-03-23 03:36:55 【问题描述】:

我有一个从另一个数据框过滤的数据框。它们显然具有相同的列和值,但是当我将循环应用于过滤后的循环时,我得到一个 Key error: 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

然后,如果我对原始数据帧执行以下操作,它可以工作,但过滤后的数据帧不行:

maturity = []
for i in range(len(df2['MATURITY'])):
    maturities = pd.to_datetime(df2['MATURITY'][i]).date()
    maturity.append(maturities)
OUTPUT = KeyError: 0

我怀疑问题出在过滤部分,但我不知道如何解决。 对此的任何帮助都将是完美的,我将非常感激

【问题讨论】:

【参考方案1】:

感觉你最后的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']]

【讨论】:

非常感谢,它适用于它。感谢您抽出宝贵时间回答。【参考方案2】:

重置数据框的索引。过滤后的数据帧的索引对应于原始数据帧中的索引。

df2 = df2.reset_index(drop= True)

【讨论】:

非常感谢,这个也可以,但我只能给出一个正确的答案,但真的,感谢您抽出宝贵时间回答@Rauf Bhat

以上是关于关键错误:0,数据帧从另一个数据帧过滤的主要内容,如果未能解决你的问题,请参考以下文章

将数据帧从 Spark 转换为 DL4j 使用的类型

如何将函数捕获的帧从另一个库传递给 OpenCV 函数?

根据第一个数据帧从第二个数据帧获取数据

将数据帧从 python 传输到 julia

将数据帧从 pandas 转换为 pyspark 到 Foundry 的数据类型

Pyspark 数据帧过滤语法错误