Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何做R-dplyr';熊猫有什么特点?_Python_Pandas - Fatal编程技术网

Python 如何做R-dplyr';熊猫有什么特点?

Python 如何做R-dplyr';熊猫有什么特点?,python,pandas,Python,Pandas,我想将我的pandas数据帧分成几个组,然后在每个块上运行一个复杂的函数。复杂函数为每个块返回一个数据帧,其中包含任意数量的列和名称以及任意数量的行。我希望在操作后合并这些结果数据帧。在R中,我可以用 library(tibble) library(dplyr) df = tribble( ~g, ~c1, ~c2, "a", 1, 6, "a", 2, 7, "b", 3, 8, "b", 4, 9, "b", 5, 10 )

我想将我的pandas数据帧分成几个组,然后在每个块上运行一个复杂的函数。复杂函数为每个块返回一个数据帧,其中包含任意数量的列和名称以及任意数量的行。我希望在操作后合并这些结果数据帧。在R中,我可以用

library(tibble)
library(dplyr)

df = tribble(
  ~g,  ~c1, ~c2,
  "a",   1,   6,
  "a",   2,   7,
  "b",   3,   8,
  "b",   4,   9,
  "b",   5,  10
)

myfct <- function(x, y){
  data.frame(c1 = x,
             c2 = y,
             res = c(x * y, x + y, x / y),
             type = c('mult', 'add', 'div'))
}

df %>% group_by(g) %>% do(myfct(.$c1, .$c2))
库(TIBLE)
图书馆(dplyr)
df=tribble(
~g,~c1,~c2,
“a”、1、6、,
“a”、2、7、,
“b”、3、8、,
“b”、4、9、,
“b”、5、10
)
myfct%按(g)%>%do分组(myfct(.$c1,.$c2))
结果是

Source: local data frame [15 x 5]
Groups: g [2]

       g    c1    c2        res   type
   <chr> <dbl> <dbl>      <dbl> <fctr>
1      a     1     6  6.0000000   mult
2      a     2     7 14.0000000    add
3      a     1     6  7.0000000    div
4      a     2     7  9.0000000   mult
5      a     1     6  0.1666667    add
6      a     2     7  0.2857143    div
7      b     3     8 24.0000000   mult
8      b     4     9 36.0000000    add
9      b     5    10 50.0000000    div
10     b     3     8 11.0000000   mult
11     b     4     9 13.0000000    add
12     b     5    10 15.0000000    div
13     b     3     8  0.3750000   mult
14     b     4     9  0.4444444    add
15     b     5    10  0.5000000    div
来源:本地数据帧[15 x 5]
分组:g[2]
g c1 c2 res型
1600万公吨
2 a 2 7 14.0000000添加
3 a 1 670000000 div
4A2790000000多辆
5 a 16 0.1666667增补
6 a 27 0.2857143分区
7 b 3 8 24.0000000 mult
8 b 4 9 36.0000000加上
9 b 5 10 50.0000000分区
10B38110000000公吨
11 b 4 9 13.0000000添加
12 b 5 10 15.0000000分区
13 b 3 8 0.3750000 mult
14 b 4 9 0.444增补
15 b 5 10 0.5000000分区

当然,这只是一个例子。

我认为您需要
应用
-同时检查:

对于重塑,也可以使用:


我认为您需要
应用
-同时检查:

对于重塑,也可以使用:


好的,我认为这是朝着正确方向迈出的一步,但我再也看不到groupby专栏了。我们能把它带回来吗?好的,我认为这是朝着正确方向迈出的一步,但我再也看不到groupby专栏了。我们能把它带回来吗?
def myfct(x):
    print (x)
    return pd.DataFrame({'mult':x['c1'] * x['c2'], 
                          'add':x['c1'] + x['c2'], 
                          'div':x['c1'] / x['c2'],
                          'g':x.name,
                          'c1': x['c1'],
                          'c2':x['c2']})

df = df.groupby('g')['c1','c2'].apply(myfct)
print (df)
   add  c1  c2       div  g  mult
0    7   1   6  0.166667  a     6
1    9   2   7  0.285714  a    14
2   11   3   8  0.375000  b    24
3   13   4   9  0.444444  b    36
4   15   5  10  0.500000  b    50
df = df.groupby('g')['c1','c2'].apply(myfct)
       .melt(id_vars=['g','c1','c2'], value_name='res', var_name='type')
print (df)
    g  c1  c2  type        res
0   a   1   6   add   7.000000
1   a   2   7   add   9.000000
2   b   3   8   add  11.000000
3   b   4   9   add  13.000000
4   b   5  10   add  15.000000
5   a   1   6   div   0.166667
6   a   2   7   div   0.285714
7   b   3   8   div   0.375000
8   b   4   9   div   0.444444
9   b   5  10   div   0.500000
10  a   1   6  mult   6.000000
11  a   2   7  mult  14.000000
12  b   3   8  mult  24.000000
13  b   4   9  mult  36.000000
14  b   5  10  mult  50.000000