pandas - 按列名中小数点前的数字合并列
问题描述
我有以下数据框(下面三个示例列):
import pandas as pd
array = {'25.2': [False, True, False], '25.4': [False, False, True], '27.78': [True, False, True]}
df = pd.DataFrame(array)
25.2 25.4 27.78
0 False False True
1 True False False
2 False True True
我想创建一个具有合并列名称的新数据框,即将 25.2 和 25.4 添加到 25 个新列中。如果单独列中的值之一为 True,则新列中的值为 True。
预期输出:
25 27
0 False True
1 True False
2 True True
有任何想法吗?
解决方案
使用rename()
+ groupby()
+ sum()
:
df=(df.rename(columns=lambda x:x.split('.')[0])
.groupby(axis=1,level=0).sum().astype(bool))
或者
分两步:
df.columns=[x.split('.')[0] for x in df]
#OR
#df.columns=df.columns.str.replace(r'\.\d+','',regex=True)
df=df.groupby(axis=1,level=0).sum().astype(bool)
输出:
25 27
0 False True
1 True False
2 True True
注意:如果您有int
列,则可以使用round()
而不是split()
推荐阅读
- javascript - 如何使用调试器通过其值查找整数变量?
- c# - 无法在 C# 中将 UTC TIME 字符串日期转换为纪元时间
- r - 更改 for 循环中引用的列索引
- r - 根据函数参数创建一系列具有名称的变量
- php - 如何更新现有Excel工作表中的一行数据并动态更新其相关列值
- sql-server - 尝试从另一台服务器中可用链接服务器的脚本创建新的链接服务器。某些服务器上的连接测试失败
- spring - 如何使用权限检查而不是角色检查来实现 RBAC(在 Spring 中)
- batch-file - 如何使用 (RunProgram) 最小化运行
- python - 如何使用 BeautifulSoup 从 div 下的多个相同类中抓取数据
- python - 在熊猫数据框中更新日期格式