无法使用系列设置熊猫列值,而是将所有内容都设置为np.nan
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用系列设置熊猫列值,而是将所有内容都设置为np.nan相关的知识,希望对你有一定的参考价值。
我有以下熊猫(pd
)数据框:
> df = pd.DataFrame({'x':[1,2,3], 'y':[4,5,6], 'z':[7,8,9]}, index=['one', 'two', 'three'])
> df
x y z
one 1 4 7
two 2 5 8
three 3 6 9
和系列:
s = pd.Series([99,99,99])
[当我尝试将b
中的这些值分配给df
中的某个列时,我没有收到任何错误,但是该列中的所有值均设置为nan
:
> df['y'] = s
> df
x y z
one 1 NaN 7
two 2 NaN 8
three 3 NaN 9
在使用这种赋值技术之前,我已经多次设置了数据框列值,为什么这行不通了?
答案
问题出在DataFrame
和Series
中的索引值:它们不匹配。默认情况下,任何pandas索引都具有从0
开始计数的整数值,因此,如果您不对其进行修改并且列的长度与Series
匹配,则没有问题。
但是,您修改了df
的索引值并将其设置为['one', 'two', 'three']
。您应确保:
Series
都使用与DataFrame
相同的索引:> s = pd.Series({'one': 99, 'two': 99, 'three': 99}) > df['y'] = s
或者,您可以只使用
s
中的(无索引)值:> df['y'] = s.values
获得:
> df
x y z
one 1 99 7
two 2 99 8
three 3 99 9
另一答案
ICCU:
另一种方法。请尝试df.assign
df.assign(y=s.values)
以上是关于无法使用系列设置熊猫列值,而是将所有内容都设置为np.nan的主要内容,如果未能解决你的问题,请参考以下文章