能否将Series赋值给DataFrame并以Series名称作为列名?
解决方法
其实你提到的df.assign()是可以不用手动指定列名的,利用Series的name属性结合字典解包就能实现:
df = df.assign(**{my_series.name: my_series})
这里my_series.name会自动取出Series的名称作为列名,不用你手动写字符串,完美避开了df['my_series'] = my_series这种显式指定列名的写法。
另外你用pd.concat([df, my_series.to_frame()], axis=1)的方法确实能实现需求,但确实不够直观。而上面的assign写法相对更简洁,也符合你“不手动指定列名”的要求。
还有一种思路是直接利用Series的name作为列索引赋值:
df[my_series.name] = my_series
这个写法也没有手动写列名字符串,而是用Series自身的name属性,同样能满足你的要求,如果你觉得索引赋值的方式也符合预期,这也是个不错的选择。
内容的提问来源于stack exchange,提问作者theodosis
相关产品推荐
相关产品推荐

