小编JAB*_*JAB的帖子

如何在python Pandas中进行条件连接?

我试图根据存储在单独表中的日期值计算Pandas中基于时间的聚合.

第一个表table_a的顶部如下所示:

    COMPANY_ID  DATE            MEASURE
    1   2010-01-01 00:00:00     10
    1   2010-01-02 00:00:00     10
    1   2010-01-03 00:00:00     10
    1   2010-01-04 00:00:00     10
    1   2010-01-05 00:00:00     10
Run Code Online (Sandbox Code Playgroud)

以下是创建表的代码:

    table_a = pd.concat(\
    [pd.DataFrame({'DATE': pd.date_range("01/01/2010", "12/31/2010", freq="D"),\
    'COMPANY_ID': 1 , 'MEASURE': 10}),\
    pd.DataFrame({'DATE': pd.date_range("01/01/2010", "12/31/2010", freq="D"),\
    'COMPANY_ID': 2 , 'MEASURE': 10})])
Run Code Online (Sandbox Code Playgroud)

第二个表table_b看起来像这样:

        COMPANY     END_DATE
        1   2010-03-01 00:00:00
        1   2010-06-02 00:00:00
        2   2010-03-01 00:00:00
        2   2010-06-02 00:00:00
Run Code Online (Sandbox Code Playgroud)

并创建它的代码是:

    table_b = pd.DataFrame({'END_DATE':pd.to_datetime(['03/01/2010','06/02/2010','03/01/2010','06/02/2010']),\
                    'COMPANY':(1,1,2,2)})
Run Code Online (Sandbox Code Playgroud)

我希望能够在table_b的END_DATE之前的每30天期间获得每个COMPANY_ID的度量列的总和.

这是(我认为)SQL等价物:

      select
 b.COMPANY_ID,
 b.DATE
 sum(a.MEASURE) AS MEASURE_TO_END_DATE
 from table_a a, table_b b …
Run Code Online (Sandbox Code Playgroud)

python join pandas

34
推荐指数
2
解决办法
4万
查看次数

如何在Pandas中透视数据框?

我有一个csv格式的表,看起来像这样.我想转置表,以便指标名称列中的值是新列,

Indicator       Country         Year   Value    
1               Angola          2005    6
2               Angola          2005    13
3               Angola          2005    10
4               Angola          2005    11
5               Angola          2005    5
1               Angola          2006    3
2               Angola          2006    2
3               Angola          2006    7
4               Angola          2006    3
5               Angola          2006    6
Run Code Online (Sandbox Code Playgroud)

我希望最终结果像这样:

Country    Year     1     2     3     4     5
Angola     2005     6     13    10    11    5
Angola     2006     3     2     7     3     6
Run Code Online (Sandbox Code Playgroud)

我尝试过使用pandas数据框并没有太大的成功.

print(df.pivot(columns = 'Country', 'Year', 'Indicator', values = 'Value'))
Run Code Online (Sandbox Code Playgroud)

有关如何实现这一点的任何想法?

谢谢

python transpose dataframe pandas

23
推荐指数
2
解决办法
4万
查看次数

在 Pandas 中按组计算同比增长

我有以下几点dataframe

In [1]: df
Out[1]: 

ID            Month           Transaction_Amount

1             2013/01         10
1             2013/02         20
1             2013/03         10
1             2013/04         20
1             2013/05         10
1             2013/06         20
1             2013/07         10
1             2013/08         20
1             2013/09         10
1             2013/10         20
1             2013/11         10
1             2013/12         20
1             2014/01         15
1             2014/02         25
1             2014/03         15
1             2014/04         25
...
1             2014/11         15
1             2014/12         25
...
10000000      2014/11         13
10000000      2014/12         23
Run Code Online (Sandbox Code Playgroud)

我想这样做是计算增长滚动月期间较去年同期,因此,例如,我想找到的值(2014/01 - 2013/01) / (2014/01)(15 …

python indexing function pandas

9
推荐指数
2
解决办法
2万
查看次数

设置 pandas 数据时间对象的格式以显示从 2 月到 2 月的财政年度并格式化为 %Y?

我有一系列像这样的时间戳,

3   2013-08-23 00:00:00
4   2008-09-21 00:00:00
5   2012-03-17 00:00:00
6   2011-12-31 00:00:00
7   2011-11-16 00:00:00
8   2008-01-23 00:00:00
9   2010-06-13 00:00:00
Run Code Online (Sandbox Code Playgroud)

我想将它们转换为 2010、2011 等格式的财政年度。财政年度为 FEB-JAN。我很困惑 - 我需要使用偏移量吗?如何将表示形式从时间戳更改为仅会计年度部分?

谢谢。

python formatting datetime date pandas

5
推荐指数
2
解决办法
3221
查看次数

熊猫日期抵消和转换

我试图将字段解释为日期,更改日期以表示日期显示的月份,将日期偏移一个月,然后将其表示为没有时间戳的日期.我最终得到了看起来和感觉太笨重的东西:

    df['DATE'].apply( lambda d: pd.to_datetime(pd.to_datetime(d).to_period('M').to_timestamp('M')\
                                      - np.timedelta64(1,'M')).date())
Run Code Online (Sandbox Code Playgroud)

时间戳是这种格式的字符串:

    2012-09-01 00:00:00
Run Code Online (Sandbox Code Playgroud)

有什么想法更好的方法吗?谢谢.

python datetime pandas

5
推荐指数
1
解决办法
4030
查看次数

将Python Pandas中的列名从datatime对象更改为字符串?

遵循这个食谱.我'转向'一个看起来像这样的数据框:

                      Close
2015-02-20 14:00:00  1200.1
2015-02-20 14:10:00  1199.8
2015-02-21 14:00:00  1199.3
2015-02-21 14:10:00  1199.0
2015-02-22 14:00:00  1198.4
2015-02-22 14:10:00  1199.7
Run Code Online (Sandbox Code Playgroud)

把它变成了这个:

             14:00  14:10
 2015-02-20 1200.1 1199.8
 2015-02-21 1199.3 1199.0
 2015-02-22 1198.4 1199.7
Run Code Online (Sandbox Code Playgroud)

但是,现在我想要在列之间进行简单的计算,例如:

df['Chg'] = df['14:10:00'] - df['14:00:00']
Run Code Online (Sandbox Code Playgroud)

我得到一个KeyError,因为在'pivoting'之后,列名是datetime.time数据.

In [1]: df_pivot.columns.tolist()
Out [2]:   
[datetime.time(14, 0),
 datetime.time(14, 10)]
Run Code Online (Sandbox Code Playgroud)

如何修改我的透视数据框,这样我就可以在列之间进行简单的计算.我猜这意味着将列名的格式从datetime.time更改为str.

谢谢

python pivot-table time-series dataframe pandas

5
推荐指数
1
解决办法
3097
查看次数

如何在x轴上绘制列并使用pandas将索引用作y轴?

我有一个60列的数据框.我希望将列绘制在X轴上,并将索引绘制在y轴上.

    df.plot() 
Run Code Online (Sandbox Code Playgroud)

上面的代码默认将索引放在x轴上.我无法弄清楚如何切换轴.任何帮助赞赏.

python matplotlib pandas

2
推荐指数
1
解决办法
7242
查看次数

Python Pandas使用1或0以外的值创建虚拟变量?

我使用get_dummies()函数在pandas中创建了虚拟变量.我想修改结果以使用另一个指标,而不仅仅是get_dummies创建的二进制是/否.

现在虚拟变量数据框的外观如何:

    VALUE   DUMMY 1 DUMMY 2 DUMMY 3
    10.00   0       0       1
    30.00   0       1       0
    50.00   0       0       0
    15.00   1       0       0
    30.00   0       0       0
Run Code Online (Sandbox Code Playgroud)

我想要实现的目标:

   VALUE    DUMMY 1 DUMMY 2 DUMMY 3
    10.00   0       0       10
    30.00   0       30      0
    50.00   0       0       0
    15.00   15      0       0
    30.00   0       0       0
Run Code Online (Sandbox Code Playgroud)

我想到这样做的方式是:

    np.where(df.COLUMN ==1, df.REPLACEMENT_VALUE, 0)
Run Code Online (Sandbox Code Playgroud)

但是这仅适用于一列.如果我尝试:

    np.where(df[:,1:5] ==1, df.REPLACEMENT_VALUE, 0)
Run Code Online (Sandbox Code Playgroud)

它不起作用,因为系列的框架形状不一致.复制系列REPLACEMENT_VALUE可能是一个选项,因此帧大小相同.我不确定这是不是最好的方法.任何帮助赞赏.

python numpy dataframe pandas

2
推荐指数
1
解决办法
2074
查看次数

将元组列表中的值映射到另一个列表

我想使用元组列表中的值替换list(foo)中的值.每个元组中的第一个值是要映射到第一个列表中的值的字段.列表栏中每个元组中的第二个值是我要在列表foo中替换的值.

foo = ['a','b','c']
bar = [('a','1'),('b','2'),('c','3')]
Run Code Online (Sandbox Code Playgroud)

预期成绩:

result = ['1','2','3']
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

python tuples list map

1
推荐指数
1
解决办法
694
查看次数