为什么使用dataframe loc函数添加的行没有给出正确的结果

时间:2019-05-01 14:57:16

标签: python pandas dataframe

我尝试使用my_df1.loc函数将新行插入名为“ my_df1”的数据框。但是结果是,添加的新行具有NaN值

my_data = {'A':pd.Series([1,2,3]),'B':pd.Series([4,5,6]),'C':('a','b','c')}
my_df1 = pd.DataFrame(my_data)
print(my_df1)
my_df1.loc[3] = pd.Series([5,5,5])

显示的结果如下

    A    B    C
0  1.0  4.0    a
1  2.0  5.0    b
2  3.0  6.0    c
3  NaN  NaN  NaN

2 个答案:

答案 0 :(得分:1)

全部为NaN的原因是my_df1.loc[3]作为索引(A,B,C),而pd.Series([5,5,5])作为索引(0,1,2)。当您执行series1=series2时,pandas只复制公共索引的值,因此是结果。

要解决此问题,请按照@ anky_91的说明进行操作,或者如果您已经拥有系列,请使用其值:

my_df1.loc[3] = my_series.values

答案 1 :(得分:0)

最后,我发现了如何将系列作为行或列添加到数据框

my_data = {'A':pd.Series([1,2,3]),'B':pd.Series([4,5,6]),'C':('a','公元前')} my_df1 = pd.DataFrame(my_data)

print(my_df1)

代码1向数据帧添加了新列'D'和值5,5,5

my_df1.loc [:,'D'] = pd.Series([5,5,5],index = my_df1.index) 打印(my_df1)

代码2向代码1中的数据帧添加索引为3且值为3、4、3、4的新行

my_df1.loc [3] = pd.Series([3,4,3,4],index =('A','B','C','D')) 打印(my_df1)