为什么使用dataframe loc函数添加的行不能提供正确的结果

问题描述 投票:0回答:2

我尝试使用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
python pandas dataframe
2个回答
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

0
投票

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

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

打印(my_df1)

Code1 adds a new column 'D' and values 5,5,5 to the dataframe

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

Code2 adds a new row with index 3 and values 3,4,3,4 to the dataframe in code 1

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

© www.soinside.com 2019 - 2024. All rights reserved.