Pandas Dataframe - 设置行等于其他行

时间:2014-03-15 21:48:52

标签: python pandas dataframe

对于这个基本数据帧,我想设置等于其他行的行。我一次做这一行没有问题:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(10, 5))
df.loc[6,:] = df.loc[4,:]

但是,当我尝试为多行执行此操作时,它们将设置为NaN而不是我引用的行:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(10, 5))
df.loc[5:6,:] = df.loc[3:4,:]

我已阅读文档但无法找到解释。有任何想法吗?谢谢。

1 个答案:

答案 0 :(得分:6)

Pandas将始终尝试根据索引对齐数据。当您将一个DataFrame分配给另一个DataFrame时,它会尝试根据索引匹配数据,而不是顺序行号。

因此,当您分配到第5-6行时,它会在分配的数据中查找带有这些索引标签的行 - 也就是说,它会查找索引为5和6的行。由于传入的数据没有t有这样的行(因为你只传入了一个包含第3行和第4行的切片),它没有找到任何匹配的数据,所以它放入NaN。

要分配“原始”值,忽略索引,您可以df.loc[5:6,:] = df.loc[3:4,:].values