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