我想将一个系列附加到数据帧,其中系列的索引与数据帧的列匹配,使用 pd.concat
,但它给了我惊喜:
df = pd.DataFrame(columns=['a', 'b'])
sr = pd.Series(data=[1,2], index=['a', 'b'], name=1)
pd.concat([df, sr], axis=0)
Out[11]:
a b 0
a NaN NaN 1.0
b NaN NaN 2.0
我所期望的当然是:
df.append(sr)
Out[14]:
a b
1 1 2
令我惊讶的是,pd.concat
不是索引列感知的。那么,如果我想将系列作为新行连接到 DF,那么我只能使用 df.append
来代替,这是真的吗?
需要通过
to_frame
从Series
DataFrame
并转置:
a = pd.concat([df, sr.to_frame(1).T])
print (a)
a b
1 1 2
细节:
print (sr.to_frame(1).T)
a b
1 1 2
或者使用放大设置:
df.loc[1] = sr
print (df)
a b
1 1 2
"df.loc[1] = sr" 如果它不在 df 中,则会删除该列
df = pd.DataFrame(columns = ['a','b'])
sr = pd.Series({'a':1,'b':2,'c':3})
df.loc[1] = sr
DF会像:
a b
1 1 2