python - 确定 pandas 数据框列与字符串匹配的位置
问题描述
我有一个熊猫数据框,如下所示。我想识别df
与给定字符串匹配的列的索引值(更具体地说,与“sim-”或“act-”之后的列名匹配的字符串)。
# Sample df
import pandas as pd
df = pd.DataFrame({
'sim-prod1': [1, 1.4],
'sim-prod2': [2, 2.1],
'act-prod1': [1.1, 1],
'act-prod2': [2.5, 2]
})
# Get unique prod values from df.columns
prods = pd.Series(df.columns[1:]).str[4:].unique()
prods
array(['prod2', 'prod1'], dtype=object)
我现在想遍历prods
并识别出现的列,prod1
然后prod2
使用这些列创建新的数据框。我怎样才能做到这一点?在 RI 中可以使用该which
功能轻松完成此操作。我想获得的示例数据框如下。
df_prod1
sim_prod1 act_prod1
0 1.0 1.1
1 1.4 1.0
df_prod2
sim_prod2 act_prod2
0 2.0 2.5
1 2.1 2.0
解决方案
尝试 groupby axis=1
:
for prod, d in df.groupby(df.columns.str[-4:], axis=1):
print(f'this is {prod}')
print(d)
print('='*20)
输出:
this is rod1
sim-prod1 act-prod1
0 1.0 1.1
1 1.4 1.0
====================
this is rod2
sim-prod2 act-prod2
0 2.0 2.5
1 2.1 2.0
====================
现在,将它们作为变量:
dfs = {prod:d for prod, d in df.groupby(df.columns.str[-4:], axis=1)}
推荐阅读
- java - Eclipse 插件类未找到异常
- c - 如何将整数数组从客户端发送到服务器?
- r - 为什么 Mathjax 不在 ioslides 中渲染内联方程?
- python - 对象检测 tensorflow api 中的 ssd mobilenet v1 可以尝试使用与默认形状不同的调整大小形状吗?
- swift - 如何从 .scn 计算 ARSCNView 区域的 SCNNode 的变换和位置
- java - 如何从请求中读取 WebSEAL 服务器地址?
- sql - SQL在不同机器上的不同性能
- mysql - 为什么在我创建表格时每个人都被分配了 evrey 选项?
- ios - 使用 Postman 和 Firebase Cloud Messaging 将推送通知发送到特定的 iOS 设备
- android - 在android中使用iText将firebase图像转换为pdf