Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/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 按日期列分组并将函数应用于按分组_Python_Python 3.x_Pandas_Data Science_Data Analysis - Fatal编程技术网

Python 按日期列分组并将函数应用于按分组

Python 按日期列分组并将函数应用于按分组,python,python-3.x,pandas,data-science,data-analysis,Python,Python 3.x,Pandas,Data Science,Data Analysis,我之前试着问了一个问题,但删除了,这样我可以问得更清楚,如果接近的话,我可以展示我在尝试什么 我的样品是 day a b 5/11/19 3 1 5/11/19 4 6 5/12/19 1 2 5/12/19 5 9 5/13/19 11 14 我希望按天列分组,并希望有一个新的df,该df计算a列和b列

我之前试着问了一个问题,但删除了,这样我可以问得更清楚,如果接近的话,我可以展示我在尝试什么

我的样品是

    day         a   b
  5/11/19       3   1
  5/11/19       4   6
  5/12/19       1   2
  5/12/19       5   9
  5/13/19      11   14
我希望按天列分组,并希望有一个新的df,该df计算a列和b列<10/该天所有值和a列(a或b)的值的数量。因为每天都有很多行

我正在尝试类似的东西

def calc_(group_df):
result = dict()
result["x"] = group_df[(group_df.x) < 10] / len(group_df.x)
result["y"] = group_df[(group_df.y) < 10] / len(group_df.y)
return pd.Series(result, index=["x", "y"])
但我得到了错误的答案

TypeError:无法使用块值操作163143/:“str”和“int”的操作数类型不受支持。

我错过什么了吗

我想要我的最终输出

     day         a   b
  5/11/19       .3  .1
  5/12/19       .5  .9
  5/13/19       .1  .4

我希望它按工作日分组,并希望每个工作日在最终输出中只显示一次

我不完全确定您希望最终的数据帧是什么样子,但看起来您可以这样做

使用此数据帧作为输入:

       day   a   b
0  5/11/19   3   1
1  5/11/19  11   3
2  5/12/19   5   9
3  5/13/19  11  14

def calc(df):

    len_a_under_10 = (df['a'] < 10).sum() / len(df['a'])
    len_b_under_10 = (df['b'] < 10).sum() / len(df['b'])

    df['a_under_10'] = len_a_under_10
    df['b_under_10'] = len_b_under_10

return df

df.groupby('day').apply(calc)

您的数据类型不匹配您正在将
字符串
除以和
整数
day a b 0 5/11/19 3 1 1 5/11/19 11 3 2 5/12/19 5 9 3 5/13/19 11 14 def calc(df): len_a_under_10 = (df['a'] < 10).sum() / len(df['a']) len_b_under_10 = (df['b'] < 10).sum() / len(df['b']) df['a_under_10'] = len_a_under_10 df['b_under_10'] = len_b_under_10 return df df.groupby('day').apply(calc)
       day   a   b  a_under_10  b_under_10
0  5/11/19   3   1         0.5         1.0
1  5/11/19  11   3         0.5         1.0
2  5/12/19   5   9         1.0         1.0
3  5/13/19  11  14         0.0         0.0