【问题标题】: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()