【问题标题】:What is this 'nan' and how to get rid of it?这是什么'nan'以及如何摆脱它?
【发布时间】:2017-02-27 05:24:36
【问题描述】:

我有两个具有多个索引的 DataFrame,其中一些对两个数据帧都是通用的。我一直在尝试根据该值的索引是否存在于第二个数据帧中从一个数据帧的一列中提取数值。到目前为止,这一直是一个重大的痛苦.....所以这就是我现在所处的位置:

a = []
b = []
for i in list:
    d = data.loc[i[0]].loc[i[1]].values[0]
    if i in another_list:
        a.append(d)
    else: 
        b.append(d)

需要很长时间,但似乎没问题...但现在我需要对这两个列表进行 t 检验... 事实证明,其中一些值是nan,这可能就是为什么 t-test 也出现nan 的原因。 我已尽一切努力摆脱它们...... 我尝试将if isinstance(d, float)if d != 'nan'if d != np.NaN 放入循环中,转换float(data.loc[i[0]].loc[i[1]].values[0]),做a = list(map(lambda x: round(float(x),2), a)), b = list(map(lambda x: round(float(x),2), b)) ...没有任何效果:( ...它告诉我既不是nan,也不是np.NaNab 所以我不知道如何摆脱它。

我不需要从 DataFrame 本身中删除 NaN,因为这也会删除行并且我需要该数据,我只需要能够使用其中一列中的值和 .dropna() 进行 t 检验不适用于列表。

【问题讨论】:

标签: python pandas dataframe nan


【解决方案1】:

使用pandas isnull 处理nan

import pandas as pd

a = []
b = []
for i in list:
    d = data.loc[i[0]].loc[i[1]].values[0]
    if not pd.isnull(d): 
        if i in another_list:
            a.append(d)
        else: 
             b.append(d)

【讨论】:

  • 甜心宝贝 geezus ......它有效......这么多小时把我的头撞在桌子上......你是我的英雄。
  • 我去过那里,伙计。
猜你喜欢
  • 2016-09-02
  • 2015-02-02
  • 2022-08-18
  • 2021-04-03
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多