2017-10-02 2 views
1

Je suis des tables de web-grattage d'un site Web, et je le mets au fichier Excel. Mon objectif est de diviser une colonne en 2 colonnes de la manière correcte.Comment puis-je diviser une colonne en 2 de la bonne façon?

Les colonnes ce que je veux partager: "VOL"

Je veux cette forme:

Premier exemple: KL744 -> KL et 0744

Deuxième exemple: BE1013 -> BE Donc, j'ai besoin de séparer le premier caractère 2 (dans la première colonne), et après que les caractères suivants qui sont 1-2-3-4 caractères. Si 4 c'est oke, je le garde, si 3, je veux mettre un 0 avant, si 2: je veux mettre 00 avant (donc mon but est d'obtenir 4 caractères/numéro dans la deuxième colonne.)

Comment est-ce que je peux faire ceci?

Voici mon code pertinent, qui contient déjà un code de formatage.

df2 = pd.DataFrame(datatable,columns = cols) 
df2["UPLOAD_TIME"] = datetime.now() 
mask = np.column_stack([df2[col].astype(str).str.contains(r"Scheduled", na=True) for col in df2]) 
df3 = df2.loc[~mask.any(axis=1)] 

if os.path.isfile("output.csv"): 
    df1 = pd.read_csv("output.csv", sep=";") 
    df4 = pd.concat([df1,df3]) 
    df4.to_csv("output.csv", index=False, sep=";") 

else: 
    df3.to_csv 
    df3.to_csv("output.csv", index=False, sep=";") 

Voici le impr excel de ma table:

enter image description here

Répondre

2

Vous pouvez utiliser indexing with str avec zfill:

df = pd.DataFrame({'FLIGHT':['KL744','BE1013']}) 


df['a'] = df['FLIGHT'].str[:2] 
df['b'] = df['FLIGHT'].str[2:].str.zfill(4) 
print (df) 
    FLIGHT a  b 
0 KL744 KL 0744 
1 BE1013 BE 1013 

Je crois en votre besoin de code:

df2 = pd.DataFrame(datatable,columns = cols) 
df2['a'] = df2['FLIGHT'].str[:2] 
df2['b'] = df2['FLIGHT'].str[2:].str.zfill(4) 
df2["UPLOAD_TIME"] = datetime.now() 
... 
... 
+0

'([A-Z] +) (\ d +)'? Parfois, mon premier personnage commence par 0 (zéro) – Harley

+0

que puis-je écrire à la place de ceci: "'KL744', 'BE1013'" pour scinder toutes les données dans cette colonne? – Harley

+0

@Harley vous n'avez pas besoin d'utiliser la première ligne de réponse. C'est parce que vous ne nous avez pas donné de données texte. Utilisez simplement les deuxième et troisième lignes pour faire votre travail. – Dark