为了账号安全,请及时绑定邮箱和手机立即绑定

将 Pandas 系列作为 DataFrame 中的一行附加,忽略不匹配的列

将 Pandas 系列作为 DataFrame 中的一行附加,忽略不匹配的列

幕布斯7119047 2021-12-17 15:33:57
假设我有以下 Pandas 数据框,但还没有行:'Jeep' | 'Volvo' | 'Honda'--------------------------我有以下熊猫系列:Honda    5Nissan   3Jeep     7Toyota   2我想将此系列添加为一行(不包括与列名不匹配的元素)结果:'Jeep' | 'Volvo' | 'Honda'----------------------------   7   |    0    |    5是否有可能做到这一点?
查看完整描述

3 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

import pandas as pd

df = pd.DataFrame(columns=['Jeep', 'Volvo', 'Honda'])  

s = pd.Series({"Honda": 5, "Nissan": 3, "Jeep": 7, "Toyota": 2})  


df.append(s[df.columns], ignore_index=True).fillna(0)


查看完整回答
反对 回复 2021-12-17
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

您可以使用append比获取特定列:


>>> import pandas as pd

>>> df = pd.DataFrame(columns=['Jeep', 'Volvo', 'Honda'])

>>> s = pd.Series([5, 3, 7, 2],index=['Honda', 'Nissan', 'Jeep', 'Toyota'])

>>> df1 = df.append(s, ignore_index=True)

>>> df1[df.columns].fillna(0)

   Jeep  Volvo  Honda

0   7.0    0.0    5.0

>>> 

这段代码实际上是:


>>> df1 = df.append(s, ignore_index=True)

>>> df1[df.columns].fillna(0)

   Jeep  Volvo  Honda

0   7.0    0.0    5.0

>>> 


查看完整回答
反对 回复 2021-12-17
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

您可以通过reindex下面列出的几种不同方式使用。


series.to_frame().T.reindex(df.columns, axis=1, fill_value=0)


   Jeep  Volvo  Honda

0     7      0      5

series.reindex(df.columns, fill_value=0).to_frame().T


   Jeep  Volvo  Honda

0     7      0      5

df.append(series.reindex(df.columns, fill_value=0).rename(len(df)))


  Jeep Volvo Honda

0    7     0     5


查看完整回答
反对 回复 2021-12-17
  • 3 回答
  • 0 关注
  • 241 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信