2012-12-07 2 views
0

J'ai un pandas DataFrame avec 18 colonnes et environ 10000 lignes. Mes premières 3 colonnes ont des valeurs séparées pour YEAR, MONTH et DAY. J'ai besoin de fusionner ces trois colonnes et avoir la date entière dans une colonne pour toutes les lignes.Combinaison de lignes dans DataFrame

Mon code à ce jour est:

df.merge('Year','/','Month') 
+0

Qu'est-ce qu'un DataFrame? S'il vous plaît nous montrer du code afin que nous puissions comprendre ce que vous faites. –

+0

son pandas DataFrame im sûr ... pandas étant un wrapper numpy avec des fonctionnalités supplémentaires .... (il est probablement classé comme plus d'un wrapper) –

+0

temp = read_table (dossier + r '\ BBE_12-11-13_0731_edited_2.lvm' , sep = r \ 't') cols = [ 'Année', 'Mois', 'Day', 'Heure' 'minute', 'Seconde', 'Profondeur (m)' , 'Température (° C)', 'Green (μg_l)', 'Blue_Green (μg_l)', 'Diatomée (μg_l)', 'Crypto (μg_l)', 'Class5 (μg_l)', 'Class6 (μg_l)', 'Classe 7 (μg_l)', 'Yellow (μg_l)', 'Transmission (%)'] df = trame de données (data = temp) df.columns = cols –

Répondre

5

Vous recherchez apply(merge est comme une base de données jointure.):

In [1]: from pandas import DataFrame 

In [2]: df = DataFrame([[1,11,2012],[1,10,2012]], columns=['day','month','year']) 

In [3]: df 
Out[3]: 
    day month year 
0 1 11 2012 
1 1 10 2012 

In [4]: df.apply(lambda row: str(row['day'])+'/'+str(row['month'])+'/'+str(row['year']), axis=1) 
Out[4]: 
0 1/11/2012 
1 1/10/2012 

La partie axis=1 signifie que vous sélectionnez des colonnes plutôt que de ramer.

Si vous voulez donner une date précise, vous pouvez utiliser datetime:

In [5]: import datetime 

In [6]: df.apply(lambda row: datetime.datetime(row['year'],row['month'],row['day']), axis=1) 
Out[6]: 
0 2012-11-01 00:00:00 
1 2012-10-01 00:00:00 

Vous pouvez ajouter ces colonnes comme en vous dataframe comme suit:

In [7]: df['new_date'] = df.apply(lambda row: str(row['day'])+'/'+str(row['month'])+'/'+str(row['year']), axis=1) 

In [8]: df 
Out[8]: 
    day month year new_date 
0 1 11 2012 1/11/2012 
1 1 10 2012 1/10/2012 

.

Il est à noter que les pandas ont un moyen facile de parse_dates when reading as a csv.

Questions connexes