相关疑难解决方法(0)

使用groupby后计算Pandas中的差异会导致意外结果

我有一个数据框,我试图在其中添加一列顺序差异.我找到了一个我喜欢的方法(并且很好地概括了我的用例).但是我注意到了一个奇怪的事情.你能帮我理解吗?

以下是一些具有正确结构的数据(代码在此处建模的代码):

import pandas as pd
import numpy as np
import random
from itertools import product

random.seed(1)       # so you can play along at home
np.random.seed(2)    # ditto

# make a list of dates for a few periods
dates = pd.date_range(start='2013-10-01', periods=4).to_native_types()
# make a list of tickers
tickers = ['ticker_%d' % i for i in range(3)]
# make a list of all the possible (date, ticker) tuples
pairs = list(product(dates, tickers))
# put them in a random …
Run Code Online (Sandbox Code Playgroud)

python diff pandas

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

Python Pandas-自上次出现以来在200万行数据框中的分钟

例如,我有以下数据框:

Date                 indicator_1    indicator_2
2013-04-01 03:50:00       x             w
2013-04-01 04:00:00       y             u
2013-04-01 04:15:00       z             v
2013-04-01 04:25:00       x             w 
2013-04-01 04:25:00       z             u
2013-04-01 04:30:00       y             u
2013-04-01 04:35:00       y             w
2013-04-01 04:40:00       z             w
2013-04-01 04:40:00       x             u
2013-04-01 04:40:00       y             v
2013-04-01 04:50:00       x             w
Run Code Online (Sandbox Code Playgroud)

我的目标是使用以下规则创建两列:

  • 第一栏应该告诉我自上次在indicator_1栏上出现“ x”以来的分钟数。

  • 第二列应提供自上次在指标_1上出现对“ y”和在指标_2列上出现“ u”以来的分钟数。

对于具有完全相同的小时且其中一个时间与“ x”(在第一种情况下)或对“ y”,“ u”(在第二种情况下)相对应的行,计算分钟数应针对变量的先前出现进行。因此,所需的输出应类似于:

 Date               desired_column_1   desired_column_2  indicator_1 indicator_2
2013-04-01 03:50:00         NaN                NaN          x              w
2013-04-01 04:00:00         10.0               NaN          y              u
2013-04-01 04:15:00         25.0               15.0         z …
Run Code Online (Sandbox Code Playgroud)

python vectorization dataframe pandas

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

Python-熊猫-展开/删除累计金额

我有一个类似以下的数据框(下面是特定数据,这是通用的)。否给我累加的总和:

                 no
name day           
Jack Monday      10
     Tuesday     40
     Wednesday   90
Jill Monday      40
     Wednesday  150
Run Code Online (Sandbox Code Playgroud)

我想“展开”累计金额,以便给我这样的东西:

print df
   name        day   no
0  Jack     Monday   10
1  Jack    Tuesday   30
2  Jack  Wednesday   50
3  Jill     Monday   40
4  Jill  Wednesday  110
Run Code Online (Sandbox Code Playgroud)

本质上,我想执行以下操作,但相反: 熊猫groupby累积和

python dataframe python-2.7 pandas

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

Pandas groupby diff

所以我的数据框看起来像这样:

from pandas.compat import StringIO
d = StringIO('''
date,site,country,score
2018-01-01,google,us,100
2018-01-01,google,ch,50
2018-01-02,google,us,70
2018-01-03,google,us,60
2018-01-02,google,ch,10
2018-01-01,fb,us,50
2018-01-02,fb,us,55
2018-01-03,fb,us,100
2018-01-01,fb,es,100
2018-01-02,fb,gb,100
''')

df = pd.read_csv(d, sep=",")
Run Code Online (Sandbox Code Playgroud)

根据国家/地区,每个网站的得分都不同.我试图找到每个站点/国家/地区组合的1/3/5天分数差异.

输出应该是:

date,site,country,score,1_day_diff
2018-01-01,google,ch,50,0
2018-01-02,google,ch,10,-40
2018-01-01,google,us,100,0
2018-01-02,google,us,70,-30
2018-01-03,google,us,60,-10
2018-01-01,fb,es,100,0
2018-01-02,fb,gb,100,0
2018-01-01,fb,us,50,0
2018-01-02,fb,us,55,5
2018-01-03,fb,us,100,45
Run Code Online (Sandbox Code Playgroud)

我首先尝试按网站/国家/日期排序,然后按网站和国家/地区进行分组,但我无法解决与分组对象的差异.

python group-by pandas

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

标签 统计

pandas ×4

python ×4

dataframe ×2

diff ×1

group-by ×1

python-2.7 ×1

vectorization ×1