У меня есть pandas.DataFrame, который выглядит следующим образом:Назначение набора данных в панд dataframe к набору состояний (интервалы)
mean std
0 0.123933 0.012185
1 0.119992 0.023833
2 0.119150 0.005884
4 0.107363 0.014191
8 0.123733 0.017090
12 0.155717 0.021808
18 0.337767 0.029997
24 0.742300 0.094091
30 1.087750 0.175827
36 1.517833 0.196728
42 1.181283 0.179431
48 1.936333 0.102685
Я хочу, чтобы назначить каждую строку в состояние, которое определяется интервалы. т.е.
'''
Produce 11 numbers for 10 intervals between 0 and 2.
i.e. first interval is between intervals[0] and intervals[1]
'''
intervals= numpy.linspace(0,2,11)
>>>list(intervals)
[0.0,
0.20000000000000001,
0.40000000000000002,
0.60000000000000009,
0.80000000000000004,
1.0,
1.2000000000000002,
1.4000000000000001,
1.6000000000000001,
1.8,
2.0]
Эти состояния имеют метки, поэтому index=0
в dataframe будет принадлежать к первому состояния (s1) внутр.
Каков наилучший способ реализовать это в python? В настоящее время я смотрю на numpy.histogram
, но это дает частоту в каждом бункере, а не имя бина.
Нужный выход будет что-то вроде:
mean std state
0 0.123933 0.012185 s1
1 0.119992 0.023833 s1
2 0.119150 0.005884 s1
4 0.107363 0.014191 s1
8 0.123733 0.017090 s1
12 0.155717 0.021808 s2
18 0.337767 0.029997 s2
24 0.742300 0.094091 s4
30 1.087750 0.175827 ...
36 1.517833 0.196728
42 1.181283 0.179431
48 1.936333 0.102685
Как вы определения состояния? Вы просто смотрите на средний столбец и видите, в каком интервалах он находится? Если это так, я не получаю пример 's3'? Среднее значение «0.158350», которое должно быть 's1'? – root
Привет корень. Спасибо что подметил это. Это ошибка. Ваше право, с каким интервалом находится среднее значение. – CiaranWelsh