如何为多个数据框交换行?
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}
我有一个字典,其中每个值都包含许多按 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}