【发布时间】:2021-10-24 03:36:35
【问题描述】:
我有以下数据框:
name_1 name_2 Temp x1 x2
0 a b 293.35 0.0 1.0
0 a b 293.35 0.5 0.5
0 a b 293.35 1.0 0.0
0 a b 295.35 0.0 1.0
0 a b 295.35 0.5 0.5
0 a b 295.35 1.0 0.0
0 a b 297.35 0.0 1.0
0 a b 297.35 0.5 0.5
0 a b 297.35 1.0 0.0
1 c d 294.35 0.0 1.0
1 c d 294.35 0.5 0.5
1 c d 294.35 1.0 0.0
1 c d 296.35 0.0 1.0
1 c d 296.35 0.5 0.5
1 c d 296.35 1.0 0.0
1 c d 299.35 0.0 1.0
1 c d 299.35 0.5 0.5
1 c d 299.35 1.0 0.0
2 a c 300.35 0.0 1.0
2 a c 305.35 0.5 0.5
2 a c 310.35 1.0 0.0
我想安排数据,使 Temp 基于 x1 和 x2 重复以获得此:
name_1 name_2 Temp x1 x2
0 a b 293.35 0.0 1.0
0 a b 295.35 0.0 1.0
0 a b 297.35 0.0 1.0
0 a b 293.35 0.5 0.5
0 a b 295.35 0.5 0.5
0 a b 297.35 0.5 0.5
0 a b 293.35 1.0 0.0
0 a b 295.35 1.0 0.0
0 a b 297.35 1.0 0.0
1 c d 294.35 0.0 1.0
1 c d 296.35 0.0 1.0
1 c d 299.35 0.0 1.0
1 c d 294.35 0.5 0.5
1 c d 296.35 0.5 0.5
1 c d 299.35 0.5 0.5
1 c d 294.35 1.0 0.0
1 c d 296.35 1.0 0.0
1 c d 299.35 1.0 0.0
2 a c 300.35 0.0 1.0
2 a c 305.35 0.5 0.5
2 a c 310.35 1.0 0.0
我使用以下方法接近了:
df['new'] = df.groupby('Temp')['Temp'].cumcount()
df.sort_values(by=['new', 'Temp', "name_1", "name_2"])
这段代码产生:
name_1 name_2 Temp x1 x2
0 a b 293.35 0.0 1.0
1 c d 294.35 0.0 1.0
0 a b 295.35 0.0 1.0
2 a c 300.35 0.0 1.0
问题在于 TRange 没有像所需的输出那样根据 name_1 和 name_2 重复。
【问题讨论】:
-
你根本不需要
groupby。只需使用sort_values。 -
df.sort_values(by='x1')? -
它不能单独工作。
-
您能详细说明一下吗?这怎么行不通?
-
为什么不起作用?它会按预期提供您粘贴的输出。
标签: python pandas dataframe sorting