【问题标题】:subset pandas DataFrame and split into 3 DataFrames子集 pandas DataFrame 并拆分为 3 个 DataFrame
【发布时间】:2020-01-15 18:32:56
【问题描述】:

如何通过一列中的值对 pandas DataFrame 进行子集化?例如,我想用每个公司的名称来分隔下面的数据集。

所以我想将keywords 数据框拆分为 3 个不同的数据框。 我尝试定义一个函数,该函数将按列中的名称值拆分数据集,然后在该函数的列上运行 for 循环。但是,它似乎不起作用。 有谁知道我怎么能做到这一点?


keywords = {'Company':['amazon', 'amazon', 'amazon', 'target' 'target' 'target', 'walmart', 'walmart', 'walmart'], 
'keywords':['abc', 'def', 'ghi', 'jkl', 'mno', 'pqr', 'rst', 'uvw', 'xyz'], 
'type':['article', 'blog', 'news', 'article', 'blog', 'news', 'article', 'blog', 'news']}

def key(name):
    key = keywords.loc[name, :]
    return

for h in keywords['Company']:
    key(h)

【问题讨论】:

    标签: python python-3.x pandas loops dataframe


    【解决方案1】:

    以下假设 df 是一个加载了您的关键字数据的数据框

    amazon_df = df.query('Company == "amazon"')
    

    这将返回一个新的数据框,其中公司列与字符串“amazon”匹配。要将变量传递给df.query 字符串,您需要在变量名称中预先添加@ 符号。 pandas.DataFrame.query docs

    例如:

    def get_subset_df(df, company_name):
        return df.query('Company == @company_name')
    

    【讨论】:

    • 如果我想在函数中使用它怎么办?这样每次我在关键字数据中添加新的公司名称时,我都不必手动更改它。
    • 获取一个唯一的公司列表,遍历它并将子集数据框添加到字典中,将公司名称映射到它的子集数据框。
    • 它似乎工作,但我如何调用这些数据集?它们存储在哪里?
    • 如果您遵循我的建议,您应该有一个字典,其中键是公司名称字符串,其对应的值是“公司”数据框。要访问公司数据框字典中的亚马逊数据框,类似于company_df_dict['amazon'] 将返回键“amazon”的值(亚马逊数据框)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 2018-10-05
    • 2016-08-26
    相关资源
    最近更新 更多