【发布时间】:2021-09-18 20:13:33
【问题描述】:
我一直在摸不着头脑,试图弄清楚为什么我从一列列表中创建一列元组的尝试没有像我预期的那样工作。所以,这里有一些可行的方法:
def convert(list):
return tuple(list)
list = ['aaaa', 'aaaa', 'd33f3f', 'sdjd3i']
print(convert(list))
('aaaa', 'aaaa', 'd33f3f', 'sdjd3i')
现在,就我而言,我的数据框如下所示:
CLOUD_STORE_ID CalculationId Date
0 772 ff80818178f93bd9017bf5094e602b05 2021-09-17
1 772 ff80818178f93bd9017bf509b4f52b0a 2021-09-17
2 772 ff80818178f93bd9017bf50ccb2c2b20 2021-09-17
0 773 ff80818178f93bd9017bf510f2a12b40 2021-09-17
1 773 ff80818178f93bd9017bf514e2582b55 2021-09-17
2 773 ff80818178f93e26017bf510b2b30c0e 2021-09-17
0 900 ff80818178f93bd9017bf510791f2b39 2021-09-17
1 900 ff80818178f93bd9017bf5109db22b3b 2021-09-17
2 900 ff80818178f93bd9017bf5139e9a2b4d 2021-09-17
0 777 ff80818178f93e26017bf50a780e0bec 2021-09-17
但我需要字符串列表:
CalculationID_df = CalculationID_df.groupby('CLOUD_STORE_ID').agg({ 'CalculationId': lambda x: '{}'.format(list(x))}).reset_index()
给出:
CLOUD_STORE_ID CalculationId
0 486 ['ff80818178f93bd9017bf521bbfd2b6b', 'ff808181...
1 522 ['ff80818178f93e26017bf4efb6fb0bb6']
2 665 ['ff80818178f93bd9017bf4f7dda12acb', 'ff808181...
3 671 ['ff80818178f93bd9017bf51890802b5d', 'ff808181...
4 772 ['ff80818178f93bd9017bf5094e602b05', 'ff808181...
我实际上需要将元组传递给 SQL 查询,因此我需要将这些列表转换为元组。我认为上述方法可以解决问题:
def convert(list):
return tuple(list)
CalculationID_df['Calcs'] = CalculationID_df.CalculationId.apply(convert)
但它会返回:
CLOUD_STORE_ID CalculationId \
0 486 ['ff80818178f93bd9017bf521bbfd2b6b', 'ff808181...
1 522 ['ff80818178f93e26017bf4efb6fb0bb6']
2 665 ['ff80818178f93bd9017bf4f7dda12acb', 'ff808181...
Calcs
0 ([, ', f, f, 8, 0, 8, 1, 8, 1, 7, 8, f, 9, 3, ...
1 ([, ', f, f, 8, 0, 8, 1, 8, 1, 7, 8, f, 9, 3, ...
2 ([, ', f, f, 8, 0, 8, 1, 8, 1, 7, 8, f, 9, 3, ..
这显然不是我所期望的。
我做错了什么?
【问题讨论】:
-
与
tuple聚合:df.groupby('CLOUD_STORE_ID')['CalculationId'].agg(tuple)
标签: python-3.x pandas