我很擅长访问和SQL,需要一些帮助重新组织一个表。我有下表(对不起下面的表 - 发布有问题):
(df.loc[:,0] == "PRAM") & (df.loc[:,2] == "CM")
Out[2]:
0 False
1 False
2 False
3 False
4 True
5 False
dtype: bool
df.loc[(df.loc[:,0] == "PRAM") & (df.loc[:,2] == "CM"), :]
Out[3]:
0 1 2 3 4 5 6
4 PRAM 1231 CM 12 NaN NaN NaN
需要将表转换为:
ID GroupID Distance Code Start_Finish
1 44 7 A S1
2 44 14 A F1
3 45 12 B S1
4 45 16 B F1
5 45 31 C S2
6 45 36 C F2
7 45 81 B S3
8 45 88 B F3
答案 0 :(得分:0)
尝试这样的事情
Select GroupID, Code, min(distance) as Start_distance, max(distance) as Finish_distance
from Table
group by GroupID, Code
如果min和max函数不能满足您的需要,请尝试使用First()和Last()代替。
糟糕 - 只是注意到GroupID 45代码B的输出中有2个不同的条目 - 这是一个要求吗?有了这种数据结构和要求,问题就变得更加困难了。
现在我看到第一个表中的最后一列 - 我认为可以用来获得你想要的输出:
Select GroupID, Code, mid(start_finish,2) as T, min(distance) as Start_distance, max(distance) as Finish_distance
from Table
group by GroupID, Code, T
答案 1 :(得分:0)
您可以使用条件聚合。
select GroupID
, CODE
, max(case when Left(Start_Finish, 1) = 'S' then Distance end) as Start_Distance
, max(case when Left(Start_Finish, 1) = 'F' then Distance end) as Finish_Distance
from SomeTable
group by GroupID
, CODE