日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

【Python】從列表/dataframe/pandas中刪除 nan

作者:別出BUG求求了 更新時間: 2023-11-16 編程語言

0.問題描述

在嘗試與Pandas一起做一個項目時,我遇到了一個問題。我有一個包含 avalue 的列表,但我無法刪除nan

incoms=data['int_income'].unique().tolist()
incoms.remove('nan')

報錯:
list.remove(x): x 不在列表中”

列表如下:incoms:

[75000.0, 50000.0, 0.0, 200000.0, 100000.0, 25000.0, nan, 10000.0, 175000.0, 150000.0, 125000.0]

1. 解決方法:

  • 需要刪除:NaN
incoms=data['int_income'].dropna().unique().tolist()
print (incoms)
[75000.0, 50000.0, 0.0, 200000.0, 100000.0, 25000.0, 10000.0, 175000.0, 150000.0, 125000.0]
  • 如果所有值都只是整數:
incoms=data['int_income'].dropna().astype(int).unique().tolist()
print (incoms)
[75000, 50000, 0, 200000, 100000, 25000, 10000, 175000, 150000, 125000]
  • 或者通過numpy.isnan 選擇所有非 NaN 值來刪除:NaN
a = data['int_income'].unique()
incoms= a[~np.isnan(a)].tolist()
print (incoms)
[75000.0, 50000.0, 0.0, 200000.0, 100000.0, 25000.0, 10000.0, 175000.0, 150000.0, 125000.0]
  • 整數
a = data['int_income'].unique()
incoms= a[~np.isnan(a)].astype(int).tolist()
print (incoms)
[75000, 50000, 0, 200000, 100000, 25000, 10000, 175000, 150000, 125000]
  • 純 python 解決方案 - 如果大,則更慢:DataFrame
incoms=[x for x in  list(set(data['int_income'])) if pd.notnull(x)]
print (incoms)
[0.0, 100000.0, 200000.0, 25000.0, 125000.0, 50000.0, 10000.0, 150000.0, 175000.0, 75000.0]
  • 整數
incoms=[int(x) for x in  list(set(data['int_income'])) if pd.notnull(x)]
print (incoms)
[0, 100000, 200000, 25000, 125000, 50000, 10000, 150000, 175000, 75000]

2. 列表list方法

您可以做的只是獲取一個清理列表,其中您不會放置一旦轉換為字符串就為“nan”的值。

代碼將是:

incoms = [incom for incom in incoms if str(incom) != 'nan']

原文鏈接:https://blog.csdn.net/weixin_39589455/article/details/128287589

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新