Python 为什么使用dataframe loc函数添加的行不能给出正确的结果
我试图使用my_df1.loc函数向名为“my_df1”的数据帧插入新行。但结果是,添加的新行具有NaN值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_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'))