簡體   English   中英

如何使用 python 刪除從 pandas 數據框轉換而來的列表中包含空元素的行?

[英]How to remove lines with empty elements within a lists converted from a pandas data frame using python?

所以我嘗試將 pandas 數據框轉換為我自定義的 class function ,這是它的代碼:

import os
import pandas as pd
import math
cwd = os.path.abspath('') 
files = os.listdir(cwd)  
df = pd.DataFrame()
for file in files:
    if file.endswith('.XLSX'):
        df = df.append(pd.read_excel(file), ignore_index=True)
#print(df)
array = df.values.tolist()
print(array)

class Item():
    
    def __init__(self, name, cost, gender, prime):
        self.__name = name
        self.__cost = cost
        self.__gender = gender
        self.__prime = prime

    def __repr__(self):
        return f"Item({self.__name},{self.__cost},{self.__gender},{self.__prime})"
    


mylist = [Item(*k) for k in array if k[0] and k[1] and k[2] and k[3]]
#print(mylist)

但是,數據框中缺少元素,因此當使用array = df.values.tolist()將其轉換為列表而不是空部分的“無”時,結果將生成“nan”。 這實際上會導致“mylist”中的過濾過程不起作用。

所以,你能不能給我代碼來代替。 先感謝您。

當它仍然是 pandas DataFrame 時更容易做到。如果你插入

df.dropna(inplace=True)

df.values.tolist()之前,應刪除任何缺少值的行。

有兩種方式

  1. 使用filter
import math
...
array = df.values.tolist()
array = filter(lambda e: all(map(lambda ee: not isinstance(ee, (float, int) or not math.isnan(ee), e)), array))
...

  1. 使用 pandas
...
df = df.dropna()
array = df.values.tolist()
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM