
本文将介绍如何使用 Pandas 库将具有特定结构的数据框进行转换,把多行多列中符合条件的值提取并合并到单行中。该结构的数据框中,存在成对的位置和名称列,我们的目标是提取位置不为 -1 的名称,并将这些名称合并到一个新的数据框中,形成单行数据。本文将提供详细的代码示例和解释,帮助你理解并应用此方法。
在数据处理中,经常会遇到需要将分散在多行多列的数据合并成单行的情况。例如,当数据以键值对的形式存储在多个列中,而我们希望将这些键值对提取出来并形成一个更紧凑的数据结构时,就可以使用本文介绍的方法。
假设我们有如下的数据框 df (Table A):
Position A Name A Position B Name B Position C Name C Position D Name D Position E Name E 0 -1 tortise -1 monkey 2 coca cola -1 slug -1 rooster 1 3 sprite 2 coffee -1 bird -1 monkey -1 ostrich 2 -1 nope -1 nope -1 fish 5 root beer 1 tea 3 -1 nope -1 nope -1 nope -1 nope -1 nope
我们的目标是创建一个新的数据框 (Table B),其中包含 Name A 到 Name E 列,并且只包含 Position 列中对应值不等于 -1 的 Name 值。预期结果如下:
Name A Name B Name C Name D Name E 0 sprite coffee coca cola root beer tea
以下是使用 Pandas 实现此转换的代码:
智慧车行小程序,是一个专门为洗车/4S/车辆维修行业打造的小程序,前后端完整代码包括车行动态,养车常识,保养预约,维修预约,洗车美容预约,汽车检测预约等功能。采用腾讯提供的小程序云开发解决方案,无须服务器和域名预约管理:开始/截止时间/人数均可灵活设置,可以自定义客户预约填写的数据项预约凭证:支持线下到场后校验签到/核销/二维码自助签到等多种方式详尽的预约数据:支持预约名单数据导出Excel,打印
0
import pandas as pd
# 示例数据框 (Table A)
data = {'Position A': [-1, 3, -1, -1],
'Name A': ['tortise', 'sprite', 'nope', 'nope'],
'Position B': [-1, 2, -1, -1],
'Name B': ['monkey', 'coffee', 'nope', 'nope'],
'Position C': [2, -1, -1, -1],
'Name C': ['coca cola', 'bird', 'fish', 'nope'],
'Position D': [-1, -1, 5, -1],
'Name D': ['slug', 'monkey', 'root beer', 'nope'],
'Position E': [-1, -1, 1, -1],
'Name E': ['rooster', 'ostrich', 'tea', 'nope']}
df = pd.DataFrame(data)
# 核心代码
new_df = (df.filter(like='Name').stack()
.where(df.filter(like='Position').stack().ne(-1).values)
.dropna().droplevel(0).sort_index().to_frame().T
)
print(new_df)代码解释:
注意事项:
总结:
本文提供了一种使用 Pandas 将具有特定结构的数据框进行转换的方法,可以将分散在多行多列中的符合条件的值提取并合并到单行中。通过使用 filter、stack、where、dropna 等函数,可以高效地完成数据转换任务。理解并掌握这些技巧,可以帮助你更好地处理和分析数据。
以上就是从多行和多列合并值为单行数据的教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号