1
votes

Comment utiliser la condition pour remplir des données?

J'ai un tel problème: DataFrame pour cela: http://sigmaquality.pl/wp-content/ uploads / 2019/03 / sample.csv

 entrez la description de l'image ici

J'ai deux colonnes: code postal et code du pays. J'ai beaucoup de cellules nulles dans la colonne: code du pays.

Je sais que si le code postal a un masque XX-XXX , il s'agit du code polonais. Parce que je le sais, je peux remplir les cellules vides par le symbole: «PL». Je ne sais pas comment faire.

Comment utiliser la condition pour remplir les données?


0 commentaires

5 Réponses :


5
votes

Utilisez groupby et ffill () avec bfill ():

df.groupby('POSTAL_CD').apply(lambda x: x.ffill().bfill())

   Unnamed: 0 POSTAL_CD COUNTRY
0         0.0    33-101      PL
1         1.0    277 32      CZ
2         2.0    72-010      PL
3         3.0    33-101      PL
4         4.0      7700      BE
5         5.0    72-010      PL
6         6.0    33-101      PL
7         7.0     10095      IT
8         8.0    33-101      PL
9         9.0    33-101      PL


2 commentaires

Si vous voulez dire à propos de la chaîne bfill et ffill, vous devez postuler ici :-)


Ça a l'air mieux maintenant :-)



5
votes

Vérifiez avec np.where avec str.contains

df['COUNTRY']=np.where(df['POSTAL_CD'].str.match(r'\d{2}-\d{3}')&df['COUNTRY'].isnull(),'PL',df['COUNTRY'])


0 commentaires

2
votes

Quand j'ai écrit ce code, j'ai considéré que vous aviez besoin d'un masque avec [deux chiffres] - [trois chiffres] pour les codes postaux, pas seulement avec un tiret à l'intérieur ou un champ non vide.

pré> XXX


0 commentaires

3
votes

Que diriez-vous d'utiliser l'indexeur loc comme indiqué ici .

df = pd.read_csv("sample.csv", sep=",", index_col=0)
df.loc[df["POSTAL_CD"].str.contains("-", na=False), "COUNTRY"] = "PL"


0 commentaires

1
votes

Après un certain temps, j'ai appris un peu et je ferais ceci:

df['Nowa'] = df['POSTAL_CD'].str.slice(2,3)
df['Nowa'] = df['Nowa'].apply(lambda x: 'PL' if x == '-' else np.nan)
df['COUNTRY'].fillna(df['Nowa'], inplace=True) 
del df['Nowa']
df

entrez la description de l'image ici


0 commentaires