Python 为什么使用dataframe loc函数添加的行不能给出正确的结果

Python 为什么使用dataframe loc函数添加的行不能给出正确的结果,python,pandas,dataframe,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

我试图使用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

之所以都是
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

最后,我了解了如何将一个系列作为行或列添加到数据帧中

my_data={'A':pd.系列([1,2,3]),'B':pd.系列([4,5,6]),'C':('A','B','C')} my_df1=pd.DataFrame(my_数据)

打印(my_df1)

Code1向数据帧添加一个新列“D”和值5,5,5 my_df1.loc[:,'D']=pd.系列([5,5,5],index=my_df1.index) 打印(my_df1)

代码2向代码1中的数据帧添加一个索引为3、值为3、4、3、4的新行 my_df1.loc[3]=pd.系列([3,4,3,4],索引=('A','B','C','D'))
打印(my_df1)

使用列表
my_df1.loc[3]=[5,5,5]
np.array
my_df1.loc[3]=np.ones(3)*5
,甚至只是一个标量
my_df1.loc[3]=5
我将列名从(a,B,C)更改为(0,1,2),然后重试。它成功了。谢谢广亨。它还成功地修改了my_df1.loc[3]=pd.Series([5,5,5],index=('A','B','C'))