假设我有一个数据框df
我想创建一个填充 0 的新列,我使用:
df['new_col'] = 0
到目前为止,没有问题。但如果我想使用的值是一个列表,它就不起作用:
df['new_col'] = my_list
ValueError: Length of values does not match length of index
我理解为什么这不起作用(pandas 试图为列的每个单元格分配列表的一个值),但我们如何避免这种行为? (如果不清楚,我希望新列的每个单元格都包含相同的预定义列表)
注意:我也尝试过:df.assign(new_col = my_list)
, 同样的问题
你必须这样做:
df['new_col'] = [my_list] * len(df)
Example:
In [13]:
df = pd.DataFrame(np.random.randn(5,3), columns=list('abc'))
df
Out[13]:
a b c
0 -0.010414 1.859791 0.184692
1 -0.818050 -0.287306 -1.390080
2 -0.054434 0.106212 1.542137
3 -0.226433 0.390355 0.437592
4 -0.204653 -2.388690 0.106218
In [17]:
df['b'] = [[234]] * len(df)
df
Out[17]:
a b c
0 -0.010414 [234] 0.184692
1 -0.818050 [234] -1.390080
2 -0.054434 [234] 1.542137
3 -0.226433 [234] 0.437592
4 -0.204653 [234] 0.106218
请注意,dfs 针对标量值进行了优化,在我看来,存储非标量值违背了这一点,因为过滤、查找、获取和设置变得有问题,以至于变得很痛苦
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)