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 个回答
11
Pandas会根据索引来对齐数据。当你把一个数据表(DataFrame)赋值给另一个数据表时,它会试着根据索引来匹配数据,而不是根据行号的顺序。
比如,当你给第5到第6行赋值时,它会查找被赋值的数据中是否有对应的索引标签,也就是说,它会找索引为5和6的行。但是你传入的数据中没有这样的行(因为你只传入了包含第3和第4行的部分),所以它找不到匹配的数据,就会填入NaN(表示缺失值)。
如果你想直接赋值“原始”数据,不考虑索引,可以使用 df.loc[5:6,:] = df.loc[3:4,:].values
这个命令。