标签: pandas-groupby

过滤数据框并根据给定条件添加新列

我有一个这样的数据框

ID      col1           col2 
1    Abc street       2017-07-27 
1    None             2017-08-17 
1    Def street       2018-07-15 
1    None             2018-08-13 
2    fbg street       2018-01-07 
2    None             2018-08-12 
2    trf street       2019-01-15 
Run Code Online (Sandbox Code Playgroud)

我想过滤col1中的所有“无”并将相应的col2值添加到新列col3中。我的输出看起来像这样

ID      col1           col2              col3 
1    Abc street       2017-07-27     2017-08-17          
1    Def street       2018-07-15     2018-08-13             
2    fbg street       2018-01-07     2018-08-12             
2    trf street       2019-01-15     
Run Code Online (Sandbox Code Playgroud)

谁能帮助我实现这一目标。

python numpy python-3.x pandas pandas-groupby

13
推荐指数
4
解决办法
320
查看次数

DataFrame:添加具有组大小的列

我有以下数据帧:

    fsq digits  digits_type
0    1   1       odd
1    2   1       odd
2    3   1       odd
3    11  2       even
4    22  2       even
5    101 3       odd
6    111 3       odd
Run Code Online (Sandbox Code Playgroud)

我想添加一个最后一列,count包含属于数字组的fsq ,即:

    fsq digits  digits_type   count
0    1   1       odd          3
1    2   1       odd          3
2    3   1       odd          3
3    11  2       even         2
4    22  2       even         2
5    101 3       odd          2
6    111 3       odd          2
Run Code Online (Sandbox Code Playgroud)

由于有3个 …

python pandas pandas-groupby

12
推荐指数
2
解决办法
3859
查看次数

pandas groupby删除列

我正在通过操作做一个简单的组,试图比较组的意思.如下所示,我从较大的数据框中选择了特定列,从中删除了所有缺失值.

选定的列和df头

但是当我分组时,我失去了几列:

分组逻辑和结果df

我从来没有遇到过大熊猫的问题,而且我在堆栈溢出上找不到任何类似的东西.有人有任何见解吗?

python dataframe pandas pandas-groupby

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

熊猫:将多个时间序列DataFrame绘制成单个图

我有以下pandas DataFrame:

     time      Group      blocks
0     1        A           4
1     2        A           7
2     3        A           12
3     4        A           17
4     5        A           21 
5     6        A           26
6     7        A           33
7     8        A           39
8     9        A           48
9     10       A           59
    ....        ....          ....
36     35      A           231
37     1       B           1
38     2       B           1.5
39     3       B           3
40     4       B           5
41     5       B           6
    ....        ....          ....
911    35      Z           349
Run Code Online (Sandbox Code Playgroud)

这是多个时间序列,疑问句数据的数据帧,从 …

python matplotlib pandas pandas-groupby

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

TypeError:unhashable类型:在python中使用groupby时的'list'

使用groupby方法时出错了:

data = pd.Series(np.random.randn(100),index=pd.date_range('01/01/2001',periods=100))
keys = lambda x: [x.year,x.month]
data.groupby(keys).mean()
Run Code Online (Sandbox Code Playgroud)

但它有一个错误:TypeError:unhashable type:'list'.我想按年和月分组,然后计算方法,为什么有错?

python python-2.7 pandas pandas-groupby

12
推荐指数
2
解决办法
6586
查看次数

Pandas:groupby列A并列出其他列的元组列表?

我想将用户事务聚合到pandas中的列表中.我无法弄清楚如何制作一个包含多个字段的列表.例如,

df = pd.DataFrame({'user':[1,1,2,2,3], 
                   'time':[20,10,11,18, 15], 
                   'amount':[10.99, 4.99, 2.99, 1.99, 10.99]})
Run Code Online (Sandbox Code Playgroud)

看起来像

    amount  time  user
0   10.99    20     1
1    4.99    10     1
2    2.99    11     2
3    1.99    18     2
4   10.99    15     3
Run Code Online (Sandbox Code Playgroud)

如果我做

print(df.groupby('user')['time'].apply(list))
Run Code Online (Sandbox Code Playgroud)

我明白了

user
1    [20, 10]
2    [11, 18]
3        [15]
Run Code Online (Sandbox Code Playgroud)

但如果我这样做

df.groupby('user')[['time', 'amount']].apply(list)
Run Code Online (Sandbox Code Playgroud)

我明白了

user
1    [time, amount]
2    [time, amount]
3    [time, amount]
Run Code Online (Sandbox Code Playgroud)

感谢下面的回答,我了解到我可以做到这一点

df.groupby('user').agg(lambda x: x.tolist()))
Run Code Online (Sandbox Code Playgroud)

要得到

             amount      time
user                         
1     [10.99, 4.99]  [20, 10]
2      [2.99, 1.99]  [11, 18]
3 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas pandas-groupby

12
推荐指数
2
解决办法
5125
查看次数

在 Pandas 中过滤 GroupBy 之后的组,同时保留组

在熊猫中,我想做: df.groupby('A').filter(lambda x: x.name > 0)- 按列A分组,然后过滤名称值为非正值的组。然而,这会取消分组作为GroupBy.filter返回DataFrame并因此丢失分组。我想按此顺序执行此操作,因为它的计算量要求较低,因为filter其次groupby会遍历 DataFrame 两次(先过滤然后分组)?此外,从分组中克隆组(到 dict 或其他内容)会使我失去无缝返回数据框的功能(就像在示例中.filter直接获取DataFrame

谢谢

例子:

   A  B
1 -1  1
2 -1  2
3  0  2
4  1  1
5  1  2
Run Code Online (Sandbox Code Playgroud)

df.groupby('A')

GroupBy object
-1 : [1, 2]
 0 : [3]
 1 : [4,5]
Run Code Online (Sandbox Code Playgroud)

GroupBy.filter(lambda x: x.name >= 0)

GroupBy object
 0 : [3]
 1 : [4,5]
Run Code Online (Sandbox Code Playgroud)

python pandas pandas-groupby

12
推荐指数
2
解决办法
6460
查看次数

熊猫数据框到dict的dict

鉴于以下pandas数据框:

  ColA ColB  ColC
0   a1    t     1
1   a2    t     2
2   a3    d     3
3   a4    d     4
Run Code Online (Sandbox Code Playgroud)

我想要一本字典词典.

但我设法创建了以下内容:

d = {t : [1, 2], d : [3, 4]}
Run Code Online (Sandbox Code Playgroud)

通过:

d = {k: list(v) for k,v in duplicated.groupby("ColB")["ColC"]}
Run Code Online (Sandbox Code Playgroud)

我怎么能得到字典的字典:

dd = {t : {a1:1, a2:2}, d : {a3:3, a4:4}}
Run Code Online (Sandbox Code Playgroud)

python dictionary pandas pandas-groupby

12
推荐指数
2
解决办法
961
查看次数

pandas - 如何获取groupby对象的最后n组并将它们组合为数据帧

如何获取最后的'n'组df.groupby()并将它们组合为数据帧.

data = pd.read_sql_query(sql=sqlstr, con=sql_conn, index_col='SampleTime')
grouped = data.groupby(data.index.date,sort=False)
Run Code Online (Sandbox Code Playgroud)

grouped.ngroups我做了我获得组277的总数.我想结合最后12组并生成数据帧.

python pandas pandas-groupby

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

Groupby Roll up 或 Roll Down 用于任何类型的聚合

TL;DR:我们如何在 Pandas 中使用任何类型的聚合实现类似于Group By Roll Up 的效果?(本学期感谢@Scott Boston

我有以下数据框:

       P   Q  R     S  T
0   PLAC  NR  F   HOL  F
1   PLAC  NR  F  NHOL  F
2   TRTB  NR  M  NHOL  M
3   PLAC  NR  M  NHOL  M
4   PLAC  NR  F  NHOL  F
5   PLAC   R  M  NHOL  M
6   TRTA   R  F   HOL  F
7   TRTA  NR  F   HOL  F
8   TRTB  NR  F  NHOL  F
9   PLAC  NR  F  NHOL  F
10 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas pandas-groupby

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