[英]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()
之前,應刪除任何缺少值的行。
有兩種方式
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))
...
...
df = df.dropna()
array = df.values.tolist()
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.