标签: pandas-groupby

从行到列重塑pandas数据帧

我正在尝试重塑我的数据.乍一看,它听起来像一个转置,但事实并非如此.我尝试过融化,堆叠/取消堆叠,连接等.

用例

我希望每个唯一个体只有一行,并将所有作业历史记录放在列上.对于客户端,可以更容易地跨行读取信息而不是读取列.

这是数据:

import pandas as pd
import numpy as np

data1 = {'Name': ["Joe", "Joe", "Joe","Jane","Jane"],
        'Job': ["Analyst","Manager","Director","Analyst","Manager"],
        'Job Eff Date': ["1/1/2015","1/1/2016","7/1/2016","1/1/2015","1/1/2016"]}
df2 = pd.DataFrame(data1, columns=['Name', 'Job', 'Job Eff Date'])

df2
Run Code Online (Sandbox Code Playgroud)

这就是我想要它的样子: 所需的输出表

在此输入图像描述

python reshape dataframe pandas pandas-groupby

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

pandas 数据框过滤器为所有行返回 True。如何?

嗨,我有一个过滤器“m”集,它足够灵活,可以由我进行更改。有时,我想按 Car 或 x_acft_body 或任何其他各种字段等进行过滤。有时我想通过注释和取消注释所需的行来返回所有行。但不更改后续代码,在过滤器 'm' 行之后。

当我不想应用过滤器时,我如何才能拥有一个对所有行都返回 true 的过滤器?例如,类似的东西,1==1但我知道这行不通。

我不想设置dfdata.somefield.notnull()等等,因为我不太确定这个字段是否总是不为空。我也不想将后续代码更改dfdata.groupby. ie 没有[m]

# set filter if needed
m = (   1==1 #& return true at all times
#         (dfdata.Car == 'PG') #&
#         (dfdata.x_acft_body == 'N')# &
#         (dfdata.Car.isin(['PG', 'VJ', 'VZ']))
)


dft1 = dfdata[m].groupby(['FLD1']).agg({'FLD2': 'count'})
Run Code Online (Sandbox Code Playgroud)

python pandas pandas-groupby

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

从熊猫多索引数据框中获取最大值

我试图从具有多个索引的 Pandas 数据框中仅检索最大值(包括多索引值)。我拥有的数据框是通过 groupby 和列选择 ('tOfmAJyI') 生成的,如下所示:

df.groupby('id')['tOfmAJyI'].value_counts()

Out[4]: 
id     tOfmAJyI
3      mlNXN       4
       SSvEP       2
       hCIpw       2
5      SSvEP       2
       hCIpw       1
       mlNXN       1
11     mlNXN       2
       SSvEP       1
...
Run Code Online (Sandbox Code Playgroud)

我想实现的是获得最大值,包括它们相应的索引值。所以像:

id     tOfmAJyI
3      mlNXN       4
5      SSvEP       2
11     mlNXN       2
...
Run Code Online (Sandbox Code Playgroud)

我有什么想法可以实现这一目标吗?我能够获得 id 和最大值,但我仍在尝试获得 'tOfmAJyI' 的相应值。

python pandas pandas-groupby

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

获取百分比和计数 Python

假设df.bun(df 是 Pandas 数据帧)是一个多索引(日期和名称),变量是用字符串写入的类别值,

date      name             values
20170331  A122630          stock-a
          A123320          stock-a
          A152500          stock-b
          A167860          bond
          A196030          stock-a
          A196220          stock-a
          A204420          stock-a
          A204450          curncy-US
          A204480          raw-material
          A219900          stock-a
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它代表同一日期的总计数及其百分比,以便用每个日期制作如下表格,

date           variable    counts     Percentage
20170331          stock         7           70%
                   bond         1           10%
           raw-material         1           10%
                 curncy         1           10%
Run Code Online (Sandbox Code Playgroud)

我已经解决print(df.groupby('bun').count())了这个问题,但它缺乏..

cf) 在获取 df.bun 之前,我使用以下代码将嵌套字典导入到 Pandas 数据框。

import numpy as np
import pandas as pd

result = pd.DataFrame()
origDict = np.load("Hannah Lee.npy")
for item in range(len(origDict)):
    newdict = {(k1, k2):v2 …
Run Code Online (Sandbox Code Playgroud)

python percentage pandas pandas-groupby

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

PySpark中熊猫的value_counts()等于多少?

我有以下python / pandas命令:

df.groupby('Column_Name').agg(lambda x: x.value_counts().max()
Run Code Online (Sandbox Code Playgroud)

我在哪里获取DataFrameGroupBy对象中所有列的值计数。

如何在PySpark中执行此操作?

count dataframe pyspark pandas-groupby

8
推荐指数
2
解决办法
3900
查看次数

每个柱子的不同石斑鱼与熊猫GroupBy

我怎么能使用多维Grouper,在这种情况下是另一个数据帧,作为另一个数据帧的Grouper?可以一步完成吗?

我的问题主要是关于如何在这些情况下执行实际的分组,但要使其更具体,请说我想接受transform并采取sum.

考虑例如:

df1 = pd.DataFrame({'a':[1,2,3,4], 'b':[5,6,7,8]})

print(df1)
   a  b
0  1  5
1  2  6
2  3  7
3  4  8

df2  = pd.DataFrame({'a':['A','B','A','B'], 'b':['A','A','B','B']})

print(df2)
   a  b
0  A  A
1  B  A
2  A  B
3  B  B
Run Code Online (Sandbox Code Playgroud)

然后,预期的输出将是:

   a  b
0  4  11
1  6  11
2  4  15
3  6  15
Run Code Online (Sandbox Code Playgroud)

凡列abdf1已按列进行分组a,并bdf2分别.

python group-by pandas pandas-groupby

8
推荐指数
2
解决办法
684
查看次数

如何在熊猫数据框中执行不同值的累积和

我有一个这样的数据框:

id    date         company    ......
123   2019-01-01        A
224   2019-01-01        B
345   2019-01-01        B
987   2019-01-03        C
334   2019-01-03        C
908   2019-01-04        C
765   2019-01-04        A
554   2019-01-05        A
482   2019-01-05        D
Run Code Online (Sandbox Code Playgroud)

并且我想获取“公司”列随时间的唯一值的累积数量。因此,如果公司在以后出现,则不会再计算在内。

我的预期输出是:

date            cumulative_count
2019-01-01      2
2019-01-03      3
2019-01-04      3
2019-01-05      4
Run Code Online (Sandbox Code Playgroud)

我试过了:

df.groupby(['date']).company.nunique().cumsum()
Run Code Online (Sandbox Code Playgroud)

但是,如果同一家公司在不同的日期出现,则此重复计算。

python datetime dataframe pandas pandas-groupby

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

当我们描述分组数据框时,25%、50%、75% 的值是什么?

我正在浏览 pandas groupby 文档,当我在特定列上分组时,如下所示:

df:

     A      B         C         D
0  foo    one -0.987674  0.039616
1  bar    one -0.653247 -1.022529
2  foo    two  0.404201  1.308777
3  bar  three  1.620780  0.574377
4  foo    two  1.661942  0.579888
5  bar    two  0.747878  0.463052
6  foo    one  0.070278  0.202564
7  foo  three  0.779684 -0.547192

grouped=df.groupby('A')
grouped.describe(A)
Run Code Online (Sandbox Code Playgroud)

              C                      ...         D                    
          count      mean       std  ...       50%       75%       max
A   B                                ...                              
bar one     1.0  0.224944       NaN  ...  1.107509  1.107509  1.107509
    three   1.0  0.704943       NaN  ...  1.833098 …
Run Code Online (Sandbox Code Playgroud)

pandas pandas-groupby

8
推荐指数
3
解决办法
7663
查看次数

如何对组进行排序,使第一行中的数字最大,第二行中的数字最小,第三行中的数字第二大,依此类推

所以我有一个这样的 df

In [1]:data= {'Group': ['A','A','A','A','A','A','B','B','B','B'],
    'Name': [ ' Sheldon Webb',' Traci Dean',' Chad Webster',' Ora Harmon',' Elijah Mendoza',' June Strickland',' Beth Vasquez',' Betty Sutton',' Joel Gill',' Vernon Stone'],
    'Performance':[33,64,142,116,122,68,95,127,132,80]}
In [2]:df = pd.DataFrame(data, columns = ['Group', 'Name','Performance'])

Out[1]:
    Group  Name             Performance
0    A     Sheldon Webb       33
1    A     Traci Dean         64
2    A     Chad Webster      142
3    A     Ora Harmon        116
4    A     Elijah Mendoza    122
5    A     June Strickland    68
6    B     Beth Vasquez       95
7    B     Betty …
Run Code Online (Sandbox Code Playgroud)

python sorting pandas columnsorting pandas-groupby

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

反向分组

我有一个 Pandas 数据框,其中包含变量名称、每个变量的值和count(显示该行的频率):

df = pd.DataFrame({'var':['A', 'B', 'C'], 'value':[10, 20, 30], 'count':[1,2,3]})

var  value  count
A    10     1
B    20     2
C    30     3
Run Code Online (Sandbox Code Playgroud)

我想用来count获得这样的输出:

var  value
A    10
B    20
B    20
C    30
C    30
C    30
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

python dataframe pandas pandas-groupby

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