【问题标题】:Create new dataframes in python pandas based on the value of a column根据列的值在 python pandas 中创建新的数据框
【发布时间】:2022-11-16 01:10:37
【问题描述】:

我有一个看起来像这样的数据集:

“查询 ID”列中有 15 个唯一值,因此我正在尝试为每个唯一值创建新的数据框。我想用这样的代码为“查询 ID”列中的每个唯一值创建一个循环:

 df_list = []
 i = 0

for x in df['query id'].unique():
    df{i} = pd.DataFrame(columns=df.columns) 
    df_list.append()
    i+=1

但我肯定在那里做错了什么并被卡住了。您对如何做到这一点有任何想法吗?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    这样的事情有帮助吗?

    
    df_list = []
    
    for x in set(df['query id'].to_list()):
        df = df[df['query id'] == x].copy() 
        df_list.append(df)
    
    
    
    

    【讨论】:

      【解决方案2】:

      听起来您想要的是每个唯一查询 ID 的过滤数据框。所以你最终会得到 15 个数据帧,每个数据帧只包含来自组合 df 的特定查询 id 的行。那正确吗?

      在那种情况下,您的方法很接近,但您可以在循环中过滤 df 。我也使用字典来存储生成的数据帧,但您也可以使用列表来完成。

      如果我对您要查找的内容的理解是正确的,我认为这应该对您有用:

      df_dict = {}
      for (i,x) in enumerate(df['query id'].unique()):
          df_dict{i} = df[df['query id']==x].copy()
      

      您也可以只使用 query_ids 作为 dict 键,如下所示:

      df_dict = {}
      for x in df['query id'].unique():
          df_dict{x} = df[df['query id']==x].copy()
      

      【讨论】:

        猜你喜欢
        • 2020-12-05
        • 2021-08-27
        • 1970-01-01
        • 2020-08-14
        • 2021-10-03
        • 2018-03-14
        • 2020-06-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多