如何将 masked pandas DataFrame 列设置为列表列

如何将列中的某些单元格设置为列表列表中的列表,其中列表列表的长度与单元格的数量相同?

运行我尝试的部分时,出现以下错误:

ValueError:使用 ndarray 设置时必须具有相等的 len 键和值

我想要的 DataFrame,如下明确定义,desired如下所示:

   include   array

0     True  [1, 2]

1    False     NaN

2    False     NaN

3     True  [3, 4]

4    False     NaN

尝试过的代码:


import pandas as pd


# This is what I tried

a = pd.DataFrame({'include': [True, False, False, True, False]})

a.loc[a['include'], 'array'] = [[1, 2], [3, 4]]


# This is what I want

desired = pd.DataFrame({'include': [True, False, False, True, False],

                        'array': [[1, 2], np.nan, np.nan, [3, 4], np.nan]})


月关宝盒
浏览 86回答 1
1回答

杨__羊羊

不太确定你想做什么,但你可以将其转换为 apandas.Series并对齐索引:a.loc[a['include'], 'array'] = pd.Series([[1, 2], [3, 4]], index=[0, 3])print(a)   include   array0     True  [1, 2]1    False     NaN2    False     NaN3     True  [3, 4]4    False     NaN要保持索引的分配通用而不是硬编码,请使用:a.loc[a['include'], 'array'] = pd.Series([[1, 2], [3, 4]], a[a['include']].index)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python