首页 > 解决方案 > 设置行的选择等于字符串列表

问题描述

我有一个数据框,我想输入到特定列中的行切片,其中输入是字符串列表 - 所以在每个选定的行中,我想要相同的字符串列表。

但是当我尝试这个时,我得到一个错误:

df['col'].iloc[0:460] = ['x', 'y', 'z', 'q']

ValueError: cannot set using a slice indexer with a different length than the value

当我做同样的事情时它工作得很好,但是我只有一个字符串而不是字符串列表。为什么它不接受列表作为输入?

标签: pythonpandasdataframe

解决方案


我们可以试试,不推荐使用带有列的updateiloc[]

df.update(pd.DataFrame({'col':[['x', 'y', 'z', 'q'] for x in range(0,460)]},index=df.index[:460]))

请注意,我通过 for 循环创建列表,因为您不希望每一行都有相同的副本,如果相同的对象然后更改列表中的每个值,所有其他行也会更改。

使用get_indexer且仅与iloc

df.iloc[0:460, df.columns.get_indexer(['col'])[0]]=[['x', 'y', 'z', 'q'] for x in range(0,460)]

推荐阅读