如何为多个数据框交换行?

How can I exchange rows for multiple dataframes?

我有一个字典,其中每个值都包含许多按 Name 分组的不同 DataFrame,但我想将其改为按 Time 分组。我正在尝试应用 group-by/apply/split 类型的函数,但因为它们不是单个 DataFrame(而是在字典中拆分 DataFrame),所以我有点卡住了。

带有 2 个数据框的字典的玩具示例:

{'df1':    Name  Time
 0  Greg  1-10
 1  Greg  5-10
 'df2':     Name  Time
 0   Jeff  5-10
 1  Jeff  1-10}

重现:

d = {'df1': pd.DataFrame({'Name': ["Jeff", "Greg"], 'Times': ["1-5", "5-10"]}), 'df2': pd.DataFrame({'Name': ["Jeff", "Greg"], 'Times': ["5-10", "1-5"]})}

期望的输出:

{'df1':    Name  Time
 0  Greg  1-10
 1  Jeff  1-10
 'df2':     Name  Time
 0  Jeff  5-10
 1  Greg  5-10}

IIUC,您的数据如下所示(我们称之为 data):

{'df1':    Name.  Time
 0  Greg.  1-10
 1  Greg.  5-10,
 'df2':     Name  Time
 0   Jeff  5-10
 1  Jeff.  1-10}

这是一个选项:concat + groupby “时间” + 字典理解:

out = {f'df{i}': df for i, (_, df) in 
       enumerate(pd.concat((data['df1'].rename(columns={'Name.':'Name'}), 
                            data['df2'])).groupby('Time'), 1)}

输出:

{'df1':     Name  Time
 0  Greg.  1-10
 1  Jeff.  1-10,
 'df2':     Name  Time
 1  Greg.  5-10
 0   Jeff  5-10}