【问题标题】:Drop 'NaN' value in dataframe在数据框中删除“NaN”值
【发布时间】:2017-11-12 15:15:50
【问题描述】:

有没有办法从数据集中只删除“nan”而不删除包含“nan”的整个行或列?我试过下面的代码,但结果不是我想要的。

df = pd.read_csv('...csv')
df.stack()

这里是csv的部分

这是在'.stack()'之后

标题与实际数据混在一起。我不想被混淆!

【问题讨论】:

  • 从 DataFrame 中删除 NaN 元素的目的是什么?是计算某种类型的统计数据(例如均值、标准差)吗?

标签: pandas dataframe nan


【解决方案1】:

你可以使用:

df.fillna('')

这将用空字符串 '' 填充 na。或者你可以随心所欲地填充它。

【讨论】:

    【解决方案2】:

    在条件下使用dropna

    nan vlaue 不等于自身。


    您可以使用删除列或行,

    栏目:del df.column_name

    行:df.drop([row_index])

    【讨论】:

      【解决方案3】:

      考虑数据框df

      df = pd.DataFrame(np.arange(9).reshape(3, 3))
      df.iloc[1, 1] = np.nan 
      print(df)
      
         0    1  2
      0  0  1.0  2
      1  3  NaN  5
      2  6  7.0  8
      

      您可以只删除中间的单元格,但前提是我们 stack

      df.stack()
      
      0  0    0.0
         1    1.0
         2    2.0
      1  0    3.0
         2    5.0
      2  0    6.0
         1    7.0
         2    8.0
      dtype: float64
      

      【讨论】:

      • 不起作用!我确实有一个标题。当我将其转换为系列时,我需要将其转换回数据帧,问题是转换后标头会与其他不好的数据混合!
      • 它确实有效。我证明确实如此。问题是,你没有向我们展示你想要的样子。在您看来,在不删除行的情况下删除 na 是什么样的?
      • 你可以再次检查初始代码,看看应用stack()后我在说什么问题
      猜你喜欢
      • 2019-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 1970-01-01
      相关资源
      最近更新 更多