就地替换完整的Pandas DataFrame

时间:2019-05-15 07:37:41

标签: python pandas

使用常规的Python列表,我可以执行以下操作:

x = [1, 2, 3]
y = x
x[:] = [4, 5, 6]
print(y)  # prints '[4, 5, 6]'

也就是说,我可以用完全不同的值就地替换list对象(x)的内容,而不会丢失以前创建的对它的引用(y)。

我想对熊猫DataFrame做同样的事情。以下操作有效,但前提是替换的形状和列必须与原始的相同:

x = pd.DataFrame({'a': [1,2], 'b': [3,4]})   
y = x
x[:] = pd.DataFrame({'a': [5, 6], 'b': [7, 8]})
print(x)
print(y)

如果替换具有不同的列名,那么它们将被静默映射到原始列名:

x[:] = pd.DataFrame({'c': [9, 10], 'd': [11, 12]})
print(x)

如果替换的形状不同,则会引发ValueError

x[:] = pd.DataFrame({
    'a': [13, 14, 15],
    'b': [16, 17, 18],
    'e': [18, 19, 20],
})

0 个答案:

没有答案