J'ai un dataframe df avec une colonne appelée columnList comme str.

"1 2,7 8,10 7"

Ensuite, je les ai convertis en une liste comme indiqué:

[1 2,7 8,10 7]

Je veux convertir la valeur dans la liste en tuple:

[(1,2),(7,8),(10,7)]

Code actuel:

temp = df['columnList'].str.split(',')
result = list(zip(temp[::2], temp[1::2]))
print(result)

Je reçois une liste vide.

df ressemble à ceci:

column1    columnList
  YY      1 2,7 8,10 7

Nom: df, dtype: object

1
xixi 2 juin 2020 à 05:16

3 réponses

Meilleure réponse

Essaye ça,

df.columnsList.apply(lambda x : 
        [tuple(map(int, x.split())) for x in "1 2, 7 8, 10 7".split(",")])

Production,

0    [(1, 2), (7, 8), (10, 7)]
Name: columnsList, dtype: object
1
sushanth 2 juin 2020 à 03:25

Vous pouvez mapper les caractères en entiers après les avoir divisés, puis convertir l'objet map en un tuple:

temp = df['columnList'].str.split(',')
result = [tuple(map(int, num.split())) for num in temp]
print(result)
# [(1, 2), (7, 8), (10, 7)]
1
adamgy 2 juin 2020 à 02:31

Vous n'avez pas besoin d'utiliser zip ici, il vous suffit de parcourir la liste, de diviser chaque élément et de le stocker sous forme de tuple.

l = [ '1 2', '7 8', '10 7']
[tuple(int(i) for i in numbers.split()) for numbers in l]

#[(1, 2), (7, 8), (10, 7)]
2
PacketLoss 2 juin 2020 à 02:29