如何搜索pandas数据帧以填充另一个数据帧?

时间:2017-02-04 05:49:47

标签: python pandas dataframe

我的表格中有数据:

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

这些年是字符串格式,我想创建一个新的数据框,每年对其进行重新采样,如下所示,这样我就可以创建多年来的执行顺序图(我会插入,因为数据没有'例如,在1801-1809之间提供数据):

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

基本上我想在第一个df的第二个df中查找日期并查看订单数量。有什么想法吗?

由于

1 个答案:

答案 0 :(得分: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