Pandas Dataframe - 设置行等于其他行

Jef*_*lin 3 python dataframe pandas

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

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(10, 5))
df.loc[6,:] = df.loc[4,:]
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试为多行执行此操作时,它们被设置为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,:]
Run Code Online (Sandbox Code Playgroud)

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

Bre*_*arn 7

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

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

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