小编pat*_*rry的帖子

为什么pandas groupby().transform()需要一个唯一索引?

我想使用groupby().transform()对(已排序)数据集中的每个记录块进行自定义(累积)转换.除非我确保我有一个唯一的密钥,否则它不起作用.为什么?

这是一个玩具示例:

df = pd.DataFrame([[1,1],
                  [1,2],
                  [2,3],
                  [3,4],
                  [3,5]], 
                  columns='a b'.split())
df['partials'] = df.groupby('a')['b'].transform(np.cumsum)
df
Run Code Online (Sandbox Code Playgroud)

给出了预期的:

     a   b   partials
0    1   1   1
1    1   2   3
2    2   3   3
3    3   4   4
4    3   5   9
Run Code Online (Sandbox Code Playgroud)

但如果'a'是关键,那一切都会出错:

df = df.set_index('a')
df['partials'] = df.groupby(level=0)['b'].transform(np.cumsum)
df

---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-146-d0c35a4ba053> in <module>()
      3 
      4 df = df.set_index('a')
----> 5 df.groupby(level=0)['b'].transform(np.cumsum)

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/groupby.pyc in transform(self, func, *args, **kwargs)
   1542             res = wrapper(group)
   1543             # result[group.index] = res …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

什么是pandas日期字段的cut/qcut相当于什么?

更新:从版本0.20.0开始,pandas cut/qcut处理日期字段.有关更多信息,请参阅功能.

pd.cut和pd.qcut现在支持datetime64和timedelta64 dtypes(GH14714,GH14798)

原始问题: Pandas cut和qcut函数非常适合用于数据透视表等的"bucketing"连续数据,但我看不到一种简单的方法来获取日期时间轴.令人沮丧,因为大熊猫在所有与时间有关的东西中都是如此之大!

这是一个简单的例子:

def randomDates(size, start=134e7, end=137e7):
    return np.array(np.random.randint(start, end, size), dtype='datetime64[s]')

df = pd.DataFrame({'ship' : randomDates(10), 'recd' : randomDates(10), 
                   'qty' : np.random.randint(0,10,10), 'price' : 100*np.random.random(10)})
df

     price      qty recd                ship
0    14.723510   3  2012-11-30 19:32:27 2013-03-08 23:10:12
1    53.535143   2  2012-07-25 14:26:45 2012-10-01 11:06:39
2    85.278743   7  2012-12-07 22:24:20 2013-02-26 10:23:20
3    35.940935   8  2013-04-18 13:49:43 2013-03-29 21:19:26
4    54.218896   8  2013-01-03 09:00:15 2012-08-08 12:50:41
5    61.404931   9  2013-02-10 19:36:54 2013-02-23 13:14:42 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

有没有一种有效的方法来合并大熊猫中的两个排序数据帧,维护排序?

如果我有两个已经在兼容键上排序的数据帧(或系列),我希望能够便宜地将它们合并在一起并保持排序.除了通过concat()和显式sort()之外,我看不到这样做的方法

a = pd.DataFrame([0,1,2,3], index=[1,2,3,5], columns=['x'])
b = pd.DataFrame([4,5,6,7], index=[0,1,4,6], columns=['x'])
print pd.concat([a,b])
print pd.concat([a,b]).sort()

   x
1  0
2  1
3  2
5  3
0  4
1  5
4  6
6  7

   x
0  4
1  0
1  5
2  1
3  2
4  6
5  3
6  7
Run Code Online (Sandbox Code Playgroud)

看起来有一些关于numpy数组的相关讨论,暗示了一种"交错"方法,但我没有找到一个好的答案.

python numpy pandas

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

如何将matplotlib底图边界数据过滤到特定国家或州?

我正在使用matplotlib底图来绘制美国大陆的地图.有没有办法将海岸线/国家边界过滤到美国?作为加拿大人,我通常不想排除加拿大,但希望在这种情况下:-)

from mpl_toolkits.basemap import Basemap

plt.figure(figsize=(10,6))
m = Basemap(width=5e6,height=3e6,projection='laea',
        resolution='c',lat_0=39, lon_0=-96)
m.drawcoastlines(color="grey")
m.drawcountries(color="grey")
m.drawstates(color="grey")

plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

标签 统计

python ×4

pandas ×3

matplotlib ×1

numpy ×1