将数据框转换为列表的有效方法是什么?这样做时,我要舍弃会导致列表大小不相等的nan值。
我可以轻松地将数据框转换为列表列表:
df_sequences = df.values.tolist()
但是它有很多nan值,对于数据框来说还可以,但是我不希望它们出现在列表中。所以我也尝试包括numpy:
test = np.array([[1,2,3],[np.nan,2,3]])
print(test)
print(~numpy.isnan(test))
x = test[~numpy.isnan(test)]
x
不幸的是我不明白,为什么在上面的示例中形状发生了变化,输出为:
[[ 1. 2. 3.]
[nan 2. 3.]]
[[ True True True]
[False True True]]
array([1., 2., 3., 2., 3.])
而且我也不知道将其应用于整个多维列表是否有效,也许有一种方法可以在转换为列表之前完成。
答案 0 :(得分:0)
numpy
数组(以及扩展名pandas
DataFrame)的本质是它们具有一致的尺寸。因此,例如,每一行将具有与其他每一行相同的列数。
我认为,要在Python中完成您想做的事情,将需要嵌套的list
理解:
[[element for element in row if ~np.isnan(element)] for row in df.values.tolist()]
答案 1 :(得分:0)
我认为您正在寻找这样的东西:
lists_not_nan = map(lambda row: filter(lambda val: not np.isnan(val), row), df.values)