首页 > 解决方案 > 如何在 Pandas 数据框中用 0 填充多个列表?

问题描述

我有 Pandas 数据框,我试图在那些缺少数字的列表中添加 0。在下面的数据框中,列表的最大长度为 4,位于第 3 位。因此,我将在其余列表中添加 0。

输入:

        Lists
0     [158, 202]
1     [609, 405]
2     [544, 20]
3     [90, 346, 130, 202]
4     [6]

输出:

        Lists
0     [158, 202, 0, 0]
1     [609, 405, 0, 0]
2     [544, 20, 0, 0]
3     [90, 346, 130, 202]
4     [6, 0, 0, 0]

标签: pythonpandaslistdataframe

解决方案


您可以使用 0 转换为数据框和 fillna,然后将 agg 转换为列表。

df.assign(New=pd.DataFrame(df['Lists'].tolist()).fillna(0).astype(int).agg(list,1))

                 Lists                  New
0           [158, 202]     [158, 202, 0, 0]
1           [609, 405]     [609, 405, 0, 0]
2            [544, 20]      [544, 20, 0, 0]
3  [90, 346, 130, 202]  [90, 346, 130, 202]
4                  [6]         [6, 0, 0, 0]


#df['Lists'] = pd.DataFrame(df['Lists'].tolist()).fillna(0).astype(int).agg(list,1)

或者按照@ShubhamSharma 的建议,您也可以致电to_numpy().tolist()

df.assign(New=pd.DataFrame([*df['Lists']]).fillna(0).astype(int).to_numpy().tolist())

推荐阅读