展平熊猫列中每个单元的列表列表

罗恩

我有一个看起来像这样的DF

DF =
index  goal   features
  0     1    [[5.20281045, 5.3353545, 7.343434, ...],[2.33435, 4.2133, ...], ...]]
  1     0    [[7.23123213, 1.2323123, 2.232133, ...],[1,45456, 0.2313, 2.23213], ...]]
  ...

功能列在列表列表中包含大量数字。在多行中其元素的实际数量并不相同,因此我想填写0以创建单个输入,并将列表列表展平为单个列表。

DF_Desired
index   goal  features
  0      1    [5.20281045, 5.3353545, 7.343434, ..., 2.33435, 4.2133, ... , ...]
  0      0    [7.23123213, 1.2323123, 2.232133, ..., 1,45456, 0.2313, 2.23213, ...]

这是我的代码:

# Flatten each Lists
flat_list = []
for sublist in data["features"]:
    for item in sublist:
        flat_list.append(item)

or

flat_list = list(itertools.chain.from_iterable(data["features"]))

我(当然)不能直接在DF中输入flat_list,因为它的长度不匹配“ ValueError:值的长度(478)与索引的长度(2)不匹配”

# Make the Lists equal in length:
length = max(map(len, df["features"]))
X = np.array([xi+[0]*(length-len(xi)) for xi in df["features"])
print(X)

这应该做的是将df [“ features”]的每个像元展平到一个列表中,然后在需要的地方添加0以适合每个列表。但是它只是返回:

[[5.20281045, 5.3353545, 7.343434, ...]
[2.33435, 4.2133, ...]
[...]
...
[7.23123213, 1.2323123, 2.232133, ...]
[1,45456, 0.2313, 2.23213 ...]]

那我到底做错了什么?

CainãMax Couto-Silva

您可以将每个列表与一个空列表求和以得到一个平面列表:

DF['features'] = DF.features.apply(lambda x: sum(x, []))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章