pandas 是否可以将一个Series指定给DataFrame并将Series的名称用作列名?

9q78igpj  于 2023-03-06  发布在  其他
关注(0)|答案(3)|浏览(139)

给定一个s系列如下:

0     6
1     0
2     0
3     8
4     8
5    10
6    10
7     9
Name: my_series, dtype: int64

并且给定一个df,是否可以将序列分配给df而不必指定列名?(将使用序列名)
因此,我想避免必须显式执行此操作:

df['my_series'] = s # avoid

我想到了这样的事情:

pd.concat([df, s.to_frame()], axis=1)

但我想这是违反直觉的。
我也想过使用df.assign,但我认为它也需要指定列名。

kfgdxczn

kfgdxczn1#

使用DataFrame.join

df = pd.DataFrame({'col_name':['12','13','14']})

s = pd.Series([0,1,2], name='my_series')

df = df.join(s)
print (df)
  col_name  my_series
0       12          0
1       13          1
2       14          2
jgovgodb

jgovgodb2#

df.insert(1,"my_series",s)
2wnc66cl

2wnc66cl3#

您可以尝试在第一个解决方案中使用pandas.Series.name

df[s.name] = s
# or df.assign(**{s.name: s})

请注意,如果已经存在同名的列,则这将覆盖该列(与pd.concat解决方案不同)。
另一个选项-df.join

df = df.join(s)

如果存在同名的列,则此函数将抛出。

相关问题