Я пытался задать вопрос ранее, но удалил, чтобы я мог задать более четко и показать, что я пытаюсь, если это близко.
Мой образец df
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, который вычисляет как для col a, так и для col b количество значений, которые <10/все значения для этого дня и столбца (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"])
а потом
df.groupby("day").apply(calc)
но я получаю ошибку
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 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
это кажется близким, но единственное, что он не делает, это группировать по дням, когда мой окончательный вывод, когда я пытаюсь, имеет несколько строк для каждого дня, когда я хочу только одну строку для каждого дня, имеет ли это смысл? извините за путаницу
ваши типы данных не совпадают, вы делите
string
на иinteger