对于这个基本数据帧,我想设置等于其他行的行。我一次做这一行没有问题:
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,:]
我已阅读文档但无法找到解释。有任何想法吗?谢谢。
答案 0 :(得分:6)
Pandas将始终尝试根据索引对齐数据。当您将一个DataFrame分配给另一个DataFrame时,它会尝试根据索引匹配数据,而不是顺序行号。
因此,当您分配到第5-6行时,它会在分配的数据中查找带有这些索引标签的行 - 也就是说,它会查找索引为5和6的行。由于传入的数据没有t有这样的行(因为你只传入了一个包含第3行和第4行的切片),它没有找到任何匹配的数据,所以它放入NaN。
要分配“原始”值,忽略索引,您可以df.loc[5:6,:] = df.loc[3:4,:].values
。