我拿到数据帧了. 说

data = pd.DataFrame([['Benz', 'MinSpeed', 0, np.nan, 'USA', '2022-08-12'],
                     ['Benz', 'TopSpeed', 200, np.nan, 'USA', '2022-08-12'],
                     ['Benz', 'ChasisNum', 654121, np.nan, 'USA', '2022-08-12'],
                     ['Benz', 'Seats', 5, np.nan, 'USA', '2022-08-12'],
                     ['Benz', 'AirBags', 5, np.nan, 'USA', '2022-08-12'],
                     ['Benz', 'VehicleType', np.nan, 'Sedan', 'USA', '2022-08-12'],
                     ['Benz', 'Color', np.nan, 'Black','USA', '2022-08-12'],
                     ['Benz', 'InternetInside', np.nan, 'Yes','USA', '2022-08-12'],
                     
                     ['Ferrari', 'MinSpeed', 0, np.nan, 'France', '2022-12-25'],
                     ['Ferrari', 'TopSpeed', 250, np.nan, 'France', '2022-12-25'],
                     ['Ferrari', 'ChasisNum', 781121, np.nan, 'France', '2022-12-25'],
                     ['Ferrari', 'Seats', 4, np.nan, 'France', '2022-12-25'],
                     ['Ferrari', 'AirBags', 2, np.nan, 'France', '2022-12-25'],
                     ['Ferrari', 'VehicleType', np.nan, 'SUV', 'France', '2022-12-25'],
                     ['Ferrari', 'Color', np.nan, 'Red','France', '2022-12-25'],
                     ['Ferrari', 'InternetInside', np.nan, 'No','France', '2022-12-25'],
                     ], 
                    columns= ['CarModel', 'Features', 'NumericalValues', 'CategoricalValues','Country', 'DeliveryDate'])

我try 使用Pivot函数对数据进行透视,但得到了"NumericalValues"和"CategoricalValues"值的重复列

Code: 说

data.pivot(index='CarModel', columns='Features', values=['NumericalValues','CategoricalValues' ]).reset_index()

I need the expected output as: 说

output_data = pd.DataFrame([['Benz', 0, 200, 654121, 5, 5, 'Sedan', 'Black', 'Yes', 'USA', '2022-08-12'],
                         ['Ferrari', 0, 250, 781121, 4, 2, 'SUV', 'Red', 'No', 'France', '2022-12-25']
                     ],
                    columns=['CarModel', 'MinSpeed', 'TopSpeed', 'ChasisNum','Seats', 'AirBags', 'VehicleType', 'Color', 'InternetInside', 'Country', 'DeliveryDate'])

说 I tried with Pivot table as well but unable to get this output.

推荐答案

从您的数据中,因为您在‘NumericalValues’或‘CategoricalValues’中有一个值,所以您可以创建一个将这两列中的所有信息与fillna结合在一起的列,然后像您所做的那样使用pivot.

res = (
    data.assign(Values=lambda x: x['NumericalValues'].fillna(x['CategoricalValues']))
      .pivot(index='CarModel', columns='Features', values='Values')
      .reset_index().rename_axis(columns=None)
)
print(res)
#   CarModel AirBags ChasisNum  Color InternetInside MinSpeed Seats TopSpeed  \
# 0     Benz     5.0  654121.0  Black            Yes      0.0   5.0    200.0   
# 1  Ferrari     2.0  781121.0    Red             No      0.0   4.0    250.0   

#   VehicleType  
# 0       Sedan  
# 1         SUV  

Python-3.x相关问答推荐

Python网页抓取:代码输出:汤未定义

如果行在所有上级索引中都为0,如何删除下级索引行?

丢弃重复的索引,并在多索引数据帧中保留一个

正确的本地react 方式-Django身份验证

给定panda代码的分组和百分比分布pyspark等价

可以在 Python 的上下文管理器中调用 sys.exit() 吗?

替换 .txt 文件中的项目列表

我正在使用 python 线程,当查询 mysql 时,代码似乎在运行并保持在无限循环中,没有返回任何错误

如何将搜索结果中的所有值保存在另一个列表中?

单击图形时 plotly graph_objects 持久性数据

attrs 将 list[str] 转换为 list[float]

'~'(波浪号)运算符在 Python 中的应用

str.format_map(mapping) 和 str.format 有什么区别

Python图例属性错误

Tensorflow:ImportError:libcudnn.so.7:无法打开共享对象文件:没有这样的文件或目录

类型提示返回 NameError: name 'datetime' not defined

如何遍历某些扩展名的文件?

无法解码 Python Web 请求

如何修复:cx_Oracle.DatabaseError:DPI-1047:找不到 64 位 Oracle 客户端库 - Python

如何从 seaborn / matplotlib 图中删除或隐藏 x 轴标签