首页 > 解决方案 > 根据列名结尾拆分 pandas df

问题描述

data = {"name": [], "value": [], "x1xyz": [], "x2xyz": [], "x3xyz":[], "x1abc": [], "x2abc": [], "x3abc": []}

df = pd.DataFrame (data, columns = ['name', 'value', 'x1xyz', "x2xyz", "x3xyz", 'x1abc', "x2abc", "x3abc"])

我希望根据列名的结束方式分为两个单独的数据框,即:

xyz = {"name": [], "value": [], "xyz": [], "xyz": [], "xyz": []}

xyz = pd.DataFrame (keep, columns = ['name', 'value', 'x1xyz', 'x2xyz', 'x3xyz'])

abc = {"name": [], "value": [], "x1abc": [], "x2abc": [], "x3abc": []}

abc = pd.DataFrame (keep, columns = ['name', 'value', 'x1abc', 'x2abc', 'x3abc'])

我真的不确定如何处理这个问题?

在我使用的真实数据集中,列名结尾比 jsut 多两个。

标签: pythonpython-3.xpandasdataframesplit

解决方案


这是仅使用列表理解来选择列的替代解决方案:

endings = ["xyz", "abc"]
dfs = {e: df[["name", "value"] + [c for c in df.columns if c.endswith(e)]] for e in endings}

dfs将是一个字典,其中每个键都是一个结尾,值是经过过滤以包含相关列的 DataFrame。


推荐阅读