2017-02-04 3 views
0

Ich habe Daten in der Form:Wie kann ich einen Pandas Datenrahmen suchen, um einen anderen Datenrahmen zu füllen?

President    Years Executive Orders 
George Washington 1789-1797  8 
John Adams   1797-1801  1 
Thomas Jefferson 1801-1809  4 
       ... 

Die Jahre sind im String-Format und ich mag einen neuen Datenrahmen schaffen, in dem jedes Jahr wie unten neu abgetastet wird, so dass ich ein Grundstück von Verfügungen schaffen könnte durch die Jahre (ich würde interpolieren, da die Daten zwischen 1801-1809 zum Beispiel keine Daten geben):

Year Executive Orders 
1789   8 
1790   0 
1791   0 
... 

Grundsätzlich ich wie ein Nachschlag für ein Datum in der zweiten df im 1. df tun möchte und sehen, wie viele Bestellungen. Irgendwelche Ideen?

Dank

Antwort

0
import pandas as pd 
import numpy as np 
from io import StringIO 

data = '''\ 
President    Years Executive Orders 
George Washington 1789-1797  8 
John Adams   1797-1801  1 
Thomas Jefferson 1801-1809  4 
''' 
df = pd.read_csv(StringIO(data), sep=r'\s+') 

df[['From', 'To']] = df['Executive'].str.split('-', expand=True) 
df['From'] = pd.to_datetime(df['From']) 
df['To'] = pd.to_datetime(df['To']) 

df_orders = df[['Orders', 'From']].set_index('From') 

Die in dem folgenden Datenrahmen ergibt

  Orders 
From    
1789-01-01  8 
1797-01-01  1 
1801-01-01  4 

Da die Index-Spalte ist ein Datum resample Spalt verwendet werden können, Daten sampeln nach Bedarf. Informationen dazu, wie Daten neu abgetastet werden können, finden Sie unter docs.

df_orders_resampled = df_orders.resample('AS').sum().fillna(0) 

      Orders 
From    
1789-01-01  8.0 
1790-01-01  0.0 
1791-01-01  0.0 
1792-01-01  0.0 
1793-01-01  0.0 
1794-01-01  0.0 
1795-01-01  0.0 
1796-01-01  0.0 
1797-01-01  1.0 
1798-01-01  0.0 
1799-01-01  0.0 
1800-01-01  0.0 
1801-01-01  4.0 

df_orders_resampled.plot() 

plot

Verwandte Themen