在两个数据帧之间切换行



我有两个数据帧,看起来像这样:

df1 = pd.DataFrame({'col1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'col2': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'col3': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'cond': [5000, 6000, 6001, 5000, 6002, 6003, 5000, 6004, 6005, 5001]})
df2 = pd.DataFrame({'col1': [10, 9, 8, 7, 6, 5, 4, 3, 2, 1],
'col2': [10, 9, 8, 7, 6, 5, 4, 3, 2, 1],
'col3': [10, 9, 8, 7, 6, 5, 4, 3, 2, 1],
'cond': [6000, 5000, 5001, 6000, 5002, 5003, 6000, 5004, 5005, 6001]})

我需要根据条件列在两个数据框之间交换行,5000±100的值应该在一个数据框中,而6000±100的值应该在另一个数据框中:

df_expected1 = pd.DataFrame({'col1': [1, 9, 8, 4, 6, 5, 7, 3, 2, 10],
'col2': [1, 9, 8, 4, 6, 5, 7, 3, 2, 10],
'col2': [1, 9, 8, 4, 6, 5, 7, 3, 2, 10],
'cond': [5000, 5000, 5001, 5000, 5002, 5003, 5000, 5004, 5005, 5001]})
df_expected2 = pd.DataFrame({'col1': [10, 2, 3, 7, 5, 6, 4, 8, 9, 1],
'col2': [10, 2, 3, 7, 5, 6, 4, 8, 9, 1],
'col2': [10, 2, 3, 7, 5, 6, 4, 8, 9, 1],
'cond': [6000, 6000, 6001, 6000, 6002, 6003, 6000, 6004, 6005, 6001]})

首先连接两个数据框,然后根据列cond拆分它们:

df = pd.concat([df1, df2]).sort_index()
df_expected1 = df[df.cond < 5500]
df_expected2 = df[df.cond > 5500]

我假设df1df2是数据帧。5500值是任意选择的,可能需要修改。

如果输出需要是字典,可以使用.to_dict()

最新更新