Je me suis gratté la tête pour essayer de comprendre pourquoi mes tentatives de créer une colonne de tuple à partir d'une colonne de listes ne fonctionnent pas comme je l'espère. Voici donc quelque chose qui fonctionne :
def convert(list):
return tuple(list)
list = ['aaaa', 'aaaa', 'd33f3f', 'sdjd3i']
print(convert(list))
('aaaa', 'aaaa', 'd33f3f', 'sdjd3i')
Dans mon cas, mon cadre de données ressemble à ceci :
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
mais j'ai besoin de la liste des cordes :
CalculationID_df = CalculationID_df.groupby('CLOUD_STORE_ID').agg({ 'CalculationId': lambda x: '{}'.format(list(x))}).reset_index()
ce qui donne :
CLOUD_STORE_ID CalculationId
0 486 ['ff80818178f93bd9017bf521bbfd2b6b', 'ff808181...
1 522 ['ff80818178f93e26017bf4efb6fb0bb6']
2 665 ['ff80818178f93bd9017bf4f7dda12acb', 'ff808181...
3 671 ['ff80818178f93bd9017bf51890802b5d', 'ff808181...
4 772 ['ff80818178f93bd9017bf5094e602b05', 'ff808181...
En fait, j'ai besoin de n-uplets à passer à une requête SQL, donc je dois transformer ces listes en n-uplets. Je pensais que la méthode ci-dessus ferait l'affaire :
def convert(list):
return tuple(list)
CalculationID_df['Calcs'] = CalculationID_df.CalculationId.apply(convert)
Mais il revient :
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, ..
ce qui n'est clairement pas ce que j'attendais.
Qu'est-ce que je fais de mal ?