Equivalent de Paste R à Python
J'ai une nouvelle python amateur.
Pour R les utilisateurs, il y a une fonction : la pâte qui permet de concaténer deux ou plusieurs variables dans un dataframe. Il est très utile.
Par exemple
supposons que j'ai cette dataframe :
categorie titre tarifMin lieu long lat img dateSortie
1 zoo, Aquar 0.0 Aquar 2.385 48.89 ilo,0
2 zoo, Aquar 4.5 Aquar 2.408 48.83 ilo,0
6 lieu Jardi 0.0 Jardi 2.320 48.86 ilo,0
7 lieu Bois 0.0 Bois 2.455 48.82 ilo,0
13 espac Canal 0.0 Canal 2.366 48.87 ilo,0
14 espac Canal -1.0 Canal 2.384 48.89 ilo,0
15 parc Le Ma 20.0 Le Ma 2.353 48.87 ilo,0
Je veux créer une nouvelle colonne qui utilisent une autre colonne dans un dataframe et du texte. Avec R, je n' :
> y$thecolThatIWant=ifelse(y$tarifMin!=-1,
+ paste("Evenement permanent -->",y$categorie,
+ y$titre,"C partir de",y$tarifMin,"€uros"),
+ paste("Evenement permanent -->",y$categorie,
+ y$titre,"sans prix indique"))
Et le résultat est :
> y
categorie titre tarifMin lieu long lat img dateSortie
1 zoo, Aquar 0.0 Aquar 2.385 48.89 ilo,0
2 zoo, Aquar 4.5 Aquar 2.408 48.83 ilo,0
6 lieu Jardi 0.0 Jardi 2.320 48.86 ilo,0
7 lieu Bois 0.0 Bois 2.455 48.82 ilo,0
13 espac Canal 0.0 Canal 2.366 48.87 ilo,0
14 espac Canal -1.0 Canal 2.384 48.89 ilo,0
15 parc Le Ma 20.0 Le Ma 2.353 48.87 ilo,0
thecolThatIWant
1 Evenement permanent --> zoo, Aquar C partir de 0.0 €uros
2 Evenement permanent --> zoo, Aquar C partir de 4.5 €uros
6 Evenement permanent --> lieu Jardi C partir de 0.0 €uros
7 Evenement permanent --> lieu Bois C partir de 0.0 €uros
13 Evenement permanent --> espac Canal C partir de 0.0 €uros
14 Evenement permanent --> espac Canal C partir de -1.0 €uros
15 Evenement permanent --> parc Le Ma C partir de 20.0 €uros
Ma question est : Comment puis-je faire la même chose en Python Pandas ou un autre module?
Merci d'avance,
Mieux,
GjT
--->
Ce que j'ai essayé
Eh bien, j'ai un très nouveau. Donc, désolé pour mon erreur. J'ai essayer de reproduire l'exemple en Python et nous supposons que j'obtiens quelque chose comme ceci
table=pd.read_csv("y.csv",sep=",")
tt= table.loc[:,['categorie','titre','tarifMin','long','lat','lieu']]
table
ategorie titre tarifMin long lat lieu
0 zoo, Aquar 0.0 2.385 48.89 Aquar
1 zoo, Aquar 4.5 2.408 48.83 Aquar
2 lieu Jardi 0.0 2.320 48.86 Jardi
3 lieu Bois 0.0 2.455 48.82 Bois
4 espac Canal 0.0 2.366 48.87 Canal
5 espac Canal -1.0 2.384 48.89 Canal
6 parc Le Ma 20.0 2.353 48.87 Le Ma
J'ai essayé ce fondamentalement
sc="Even permanent -->" + " "+ tt.titre+" "+tt.lieu
tt['theColThatIWant'] = sc
tt
Et j'ai eu cette
categorie titre tarifMin long lat lieu theColThatIWant
0 zoo, Aquar 0.0 2.385 48.89 Aquar Even permanent --> Aquar Aquar
1 zoo, Aquar 4.5 2.408 48.83 Aquar Even permanent --> Aquar Aquar
2 lieu Jardi 0.0 2.320 48.86 Jardi Even permanent --> Jardi Jardi
3 lieu Bois 0.0 2.455 48.82 Bois Even permanent --> Bois Bois
4 espac Canal 0.0 2.366 48.87 Canal Even permanent --> Canal Canal
5 espac Canal -1.0 2.384 48.89 Canal Even permanent --> Canal Canal
6 parc Le Ma 20.0 2.353 48.87 Le Ma Even permanent --> Le Ma Le Ma
Maintenant, je suppose que j'ai à boucle avec condition si il n'y a pas de vectoriser comme dans la R?
source d'informationauteur GjT
Vous devez vous connecter pour publier un commentaire.
Ici est une simple application qui fonctionne sur les listes, et probablement d'autres iterables. Avertissement: il est seulement légèrement testé, et seulement en Python 3.5:
Vous pouvez aussi avoir plus de plaisir et de reproduire d'autres fonctions telles que
paste0
:Pour ce cas particulier, le
paste
opérateur dansR
est le plus proche de Pythonformat
qui a été ajoutée dans la version 2.6 de Python. Il est plus récent et un peu plus souple que l'ancienne%
opérateur.Pour un simple Python-ic répondre sans utiliser numpy ou les pandas, voici une façon de faire à l'aide de vos données d'origine dans la forme d'une liste de listes (ce qui pourrait aussi avoir été fait comme une liste de dict, mais qui semblait plus encombré pour moi).
Le résultat est le suivant:
Note que bien que je l'ai défini une liste
names
il n'est pas réellement utilisé. On pourrait définir un dictionnaire avec les noms des titres de la clé et le numéro de champ (à partir de 0) que la valeur, mais je ne vous embêtez pas avec cela pour essayer de rester sur un exemple simple.Les fonctions
prix
etmsg
sont assez simples. La seule partie délicate est la compréhension de liste[m.append(msg(m)) for m in records]
qui itère sur tous les enregistrements, et modifie chaque pour ajouter votre nouveau domaine, créé par un appel àmsg
.ma réponse est vaguement basé sur la question d'origine, a été édité à partir de répondre par woles.
Je voudrais illustrer les points:
pour R les gens: il n'y a pas de ifelse en forme directe (mais il existe des moyens pour bien la remplacer).
C'est l'exemple simple comment faites-en que (Si je suis pas worng ce que vous voulez faire):
De sortie:
Ce que la boucle pour l'impression:
2013-01-01 00:00:00 Evenement permanente --> -0.400550121168 , à côté des données -0.204032344442
Merci tout le monde,
De le faire. J'ai particulièrement grâce technicité.
C'est ce que les beaux travaux :
Qui donne
Vous pouvez simplement utiliser
+
. Par exemple, à la place depaste0(x, y, z)
dans R, vous utilisezx + y + z
en Python.Beaucoup cela fonctionne comme la commande Coller dans R:
R code:
[1]
Python:
Résultat:
Nous allons essayer de choses à appliquer.
vous recevied choses semblables d'une pâte
pandas.Series.str.cat
est votre ami