【问题标题】:How should I remove nan values from a dataframe in python?我应该如何从 python 中的数据框中删除 nan 值?
【发布时间】:2021-08-20 23:12:36
【问题描述】:

我有一个 excel 文件,并从它的列中创建了列表。问题是列的行不相等。因此,我在列表末尾有多个“nan”值。我尝试使用 dropna() 方法删除它们,但仍然存在“nan”值。这是我的代码:

import pandas as pd

excel_name = r'file_name.xlsx'
df = pd.read_excel(excel_name, engine='openpyxl')
df.dropna()

clomun_1 = list(df['clomun1'])
clomun_2 = list(df['clomun2'])
clomun_3 = list(df['clomun3'])
print(clomun_1)
print(clomun_2)
print(clomun_3)

输出:

clomun_1 = ['value1', 'value2', 'value3', 'value4', 'nan', 'nan', 'nan', 'nan']
clomun_2 = ['value1', 'value2', 'value3', 'value4', 'value5', 'value6', 'nan', 'nan']
clomun_3 = ['value1', 'value2', 'nan', 'nan', 'nan', 'nan', 'nan', 'nan']

我只想保留价值观。我必须删除“nan”元素。

【问题讨论】:

标签: python pandas list dataframe nan


【解决方案1】:

试试这个:

df = pd.read_excel(excel_name, engine='openpyxl', na_values=['nan']) #add na_values

clomun_1 = df['clomun1'].dropna().tolist()

print(clomun_1)

['value1', 'value2', 'value3', 'value4']

【讨论】:

  • 返回:[真,真,真,真]
  • 这确实有效。谢谢你。你就是那个男人。
【解决方案2】:

您可以使用 lambda 函数来实现这一点。

clomun_1_new= [x for x in clomun_1 if x!='nan']

对其他两个列表重复相同的操作。

【讨论】:

  • 不工作。 'nan' 值在 print(clomun_1_new) 之后仍然存在
  • 它对我有用。尝试将行更改为:clomun_1_new= [x for x in clomun_1 if str(x) != 'nan']
猜你喜欢
  • 2020-06-17
  • 2017-11-12
  • 1970-01-01
  • 1970-01-01
  • 2019-09-15
  • 2016-06-16
  • 2020-09-18
  • 2017-06-21
  • 2019-01-20
相关资源
最近更新 更多