gpt4 book ai didi

python - 如何合并多个唯一id

转载 作者:太空宇宙 更新时间:2023-11-03 20:42:01 25 4
gpt4 key购买 nike

我有一个类似于下面的数据:

Id  Car     Code    ShowTime
1 Honda A 10/18/2017 14:45
2 Honda A 10/18/2017 17:10
3 Honda C 10/18/2017 19:35
4 Toyota B 10/18/2017 12:20
5 Toyota B 10/18/2017 14:45

如果我包含唯一的 Id,下面的代码将返回多个实例输出:

all_car_schedules = db.session.query(Schedules.id, Schedules.code,
Car.carname, Schedules.showtime) \
.filter(Schedules.id == Car.id)

df = pd.read_sql(all_car_schedules.statement, db.session.bind)

df[['show_date', 'start_times', 'median']] = df.showtime.str.split(' ', expand=True)
df['start_times'] = df['start_times'] + df['median']
df.drop('screening', axis=1, inplace=True)
df.drop('median', axis=1, inplace=True)
df_grp = df.groupby(['id', 'code', 'carname'])
df_grp_time_stacked = df_grp['start_times'].apply(list).reset_index()
df_grp_time_stacked['start_times'] = df_grp_time_stacked['start_times'].apply(lambda x: x[0] if (len(x) == 1) else x)
return_to_dict = df_grp_time_stacked.to_dict(orient='records')

上面的代码返回多行,而预期的输出应该是:

"data":{
'id': '1',
'schedule': {
'car': 'Honda',
'show_date': '10/18/2017',
'time_available': [
'14:45',
'17:10',
],
'code': 'A'

}
},{
'id': '3',
'schedule': {
'car': 'Honda',
'show_date': '10/18/2017',
'time_available': [
'19:35'
],
'code': 'C'
}
},{
'id': '4',
'schedule': {
'car': 'Toyota',
'show_date': '10/18/2017',
'time_available': [
'12:20',
'14:45'
],
'code': 'B'
}
}

我也使用sqlite3作为数据库。我不确定查询是否应该更改。请让我知道您的想法并帮助我解决这个问题。太感谢了。我还使用 sqlite3 作为数据库。

最佳答案

您可以将 groupby() 函数与 list 选项结合使用:

df = pd.DataFrame({'Id' : [1,2,3,4,5], 'Car': ['Honda', 'Honda', 'Honda', 'Toyota', 'Toyota'],
'Code': ['A', 'A', 'B', 'C', 'C'], 'show date': ['10/18/2017', '10/18/2017',
'10/18/2017', '10/18/2017', '10/18/2017'],
'start_times' : ['14:45', '17:10', '19:35', '12:20', '14:45']})

df.groupby(['Car', 'Code', 'show date'])['start_times'].apply(list)

输出:

                           start_times
Car Code show date
Honda A 10/18/2017 [14:45, 17:10]
B 10/18/2017 [19:35]
Toyota C 10/18/2017 [12:20, 14:45]
<小时/>

如果您想保留第一个 id,则必须将选项 'first' 添加到 Id 行,如下所示:

df.groupby(['Car', 'Code', 'show date']).agg({'start_times' : list, 'Id' : 'first'})

# Output
start_times Id
Car Code show date
Honda A 10/18/2017 [14:45, 17:10] 1
B 10/18/2017 [19:35] 3
Toyota C 10/18/2017 [12:20, 14:45] 4

关于python - 如何合并多个唯一id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56806174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com