2016-05-24 1 views
-2

J'essaie d'extraire les 5 derniers chiffres d'un nombre dans une colonne dans un fichier CSV et de l'ajouter en tant que colonne supplémentaire. Il y a plus de colonnes dans mes données réelles, et il y a des milliers de rangées de nombres. Par exemple:Python 3.5 Extrait les chiffres de la colonne dans la nouvelle colonne

Column 1, Column 2, Column 3, Column 4 
3333333, 1234567, 4444444, 5555555 
7777777, 7654321, 5555555, 6666666 

et je veux que ce soit:

Column 1, Column 2, Column 3, Column 4, Column 5 
    33333333, 1234567, 44444444, 55555555, 34567 
    77777777, 7654321, 55555555, 66666666, 54321 

Jusqu'à présent, je l'ai essayé itérations de findall et pensent que regex va fournir la meilleure solution. Je peux extraire la colonne, pas exactement ce que je veux faire, mais jusqu'ici c'est aussi loin que je l'ai eu.

+0

ce que vous avez à ce jour? Avez-vous réussi à extraire des données d'une colonne? être un peu plus précis. – quemeraisc

+0

s'il vous plaît nous montrer votre code, il n'est pas difficile de sélectionner uniquement certaines valeurs d'une chaîne ou int. mais nous devons voir comment vous extrayez vos données en premier lieu pour avoir une meilleure compréhension de ce dont vous avez besoin. – WildCard

+0

Quemeraisc et WildCard, oui, je suis capable de déplacer des colonnes et d'ajouter des en-têtes, mais je n'arrive pas à comprendre comment extraire uniquement la dernière partie d'une colonne. La réponse de Ritesht93 a bien fonctionné. Merci encore. – james

Répondre

1
import csv 

print('Column 1, Column 2, Column 3, Column 4, Column 5') 
with open('data1', 'r') as f: 
    reader=csv.reader(f) 
    next(reader) 
    for row in reader: 
     print(row[0], row[1], row[2], row[3], row[1][-5:], sep=', ') 

ici est la sortie:

$ cat data1 
Column 1, Column 2, Column 3, Column 4 
3333333, 1234567, 4444444, 5555555 
7777777, 7654321, 5555555, 6666666 
$ python3 a.py 
Column 1, Column 2, Column 3, Column 4, Column 5 
3333333, 1234567, 4444444, 5555555, 34567 
7777777, 7654321, 5555555, 6666666, 54321 
+0

Ritesht93, j'ai utilisé votre exemple et cela a fonctionné exactement comme nécessaire. J'avais essayé d'autres choses, mais ça n'a pas marché. Merci pour la réponse rapide et fiable. – james