我有一个数据集,看起来像这样:
在列'query id'中有15个唯一值,所以我尝试为每个唯一值创建新的 Dataframe 。我想为列'query id'中的每个唯一值创建一个循环,代码如下:
df_list = []
i = 0
for x in df['query id'].unique():
df{i} = pd.DataFrame(columns=df.columns)
df_list.append()
i+=1
但我肯定是在那里做错了什么,被卡住了。你有什么想法怎么做吗?
示例数据集:
relevance query id 1 2 3
1 WT04-170 10 40 80
1 WT04-170 20 60 70
1 WT04-176 30 70 50
1 WT04-176 40 90 20
1 WT04-173 50 100 10
3条答案
按热度按时间h4cxqtbf1#
Pandas有一个内置函数,用于迭代列中的唯一值并选择匹配的行。
在您的情况下,您可以使用以下命令将字典创建为一行程序:
有了 Dataframe 字典后,可以使用查询id作为关键字来访问每个 Dataframe :
ctzwtxfj2#
这样有用吗?
06odsfpq3#
听起来您需要的是每个唯一查询id的过滤 Dataframe 。因此,您最终将得到15个 Dataframe ,每个 Dataframe 仅包含组合df中该特定查询id的行。是这样吗?
在这种情况下,您的方法很接近,但您可以在循环中过滤df。我也使用了dict来存储结果 Dataframe ,但您也可以使用列表来完成。
如果我对你所寻找的东西的理解是正确的,我认为这应该对你有用:
您也可以只使用query_ids作为dict键,如下所示: