对于这个基本数据框,我想将行设置为与其他行相等。我一次只做一行没有问题:
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,:]
我已通读文档,但找不到解释。有任何想法吗?谢谢。
最佳答案
Pandas 将始终尝试根据索引对齐数据。当您将一个 DataFrame 分配给另一个 DataFrame 时,它会尝试根据索引而不是连续的行号来匹配数据。
因此,当您分配给第 5-6 行时,它会在分配的数据中查找具有这些索引标签的行——也就是说,它会查找索引为 5 和 6 的行。由于传入的数据不没有任何这样的行(因为您传入了一个仅包含第 3 行和第 4 行的切片),它找不到任何匹配的数据,因此它放入 NaN。
要分配“原始”值,忽略索引,您可以执行 df.loc[5:6,:] = df.loc[3:4,:].values
.
关于python - Pandas Dataframe - 设置行等于其他行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22430195/