2017-02-04 2 views
0

У меня есть данные в виде:Как я могу найти фрейм данных pandas, чтобы заполнить другой фрейм данных?

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

Лет в строчном формате, и я хотел бы создать новый dataframe, в котором каждый год понижается, как показано ниже, так что я мог бы создать участок распоряжений через годы (я бы интерполировать, потому что данные не дают данных между 1801-1809, например):

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

в основном я хотел бы сделать, как для поиска даты в 2-ДФ в 1 ДФ и посмотреть, сколько заказов. Есть идеи?

Благодаря

ответ

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') 

Это приводит к следующему DataFrame

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

Поскольку столбец является дата столбец resample может быть использован для повторной выборки данных по мере необходимости. См. 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

Смежные вопросы