Pandas Dataframe - 将行设置为其他行相等

6 投票
1 回答
7516 浏览
提问于 2025-04-17 22:29

对于这个基本的数据框,我想把某些行的内容设置为其他行的内容。我一个一个行地设置没有问题:

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 个回答

11

Pandas会根据索引来对齐数据。当你把一个数据表(DataFrame)赋值给另一个数据表时,它会试着根据索引来匹配数据,而不是根据行号的顺序。

比如,当你给第5到第6行赋值时,它会查找被赋值的数据中是否有对应的索引标签,也就是说,它会找索引为5和6的行。但是你传入的数据中没有这样的行(因为你只传入了包含第3和第4行的部分),所以它找不到匹配的数据,就会填入NaN(表示缺失值)。

如果你想直接赋值“原始”数据,不考虑索引,可以使用 df.loc[5:6,:] = df.loc[3:4,:].values 这个命令。

撰写回答