Привет всем,Панды интерполировать данные с единицами
Я смотрел на StackOverflow за пару лет, и это помогло мне много, так много, что я никогда не придется зарегистрироваться, прежде чем :)
Но сегодня я столкнулся с проблемой использования Python с Pandas и количеством (может быть, unum или pint). Я стараюсь сделать все возможное, чтобы сделать ясный пост, но так как это мой первый один, я прошу прощения, если что-то сбивает с толку, и будет пытаться исправить любую ошибку вы найдете :)
Я хочу, чтобы импортировать данные от источника и построить dataframe панды следующим образом:
import pandas as pd
import quantities as pq
depth = [0.0,1.1,2.0] * pq.m
depth2 = [0,1,1.1,1.5,2] * pq.m
s1 = pd.DataFrame(
{'depth' : [x for x in depth]},
index = depth)
Это дает:
S1=
depth
0.0 0.0 m
1.1 1.1 m
2.0 2.0 m
Теперь я хочу расширьте данные до значений глубины 2: (очевидно, нет точки для интерполяции глубины по глубине, но это тест, прежде чем он усложнится).
s2 = s1.reindex(depth2)
Это дает:
S2=
depth
0.0 0.0 m
1.0 NaN
1.1 1.1 m
1.5 NaN
2.0 2.0 m
До сих пор никаких проблем.
Но когда я пытаюсь интерполировать недостающие значения делают:
s2['depth'].interpolate(method='values')
я получил следующее сообщение об ошибке:
C:\Python27\lib\site-packages\numpy\lib\function_base.pyc in interp(x, xp, fp, left, right)
1067 return compiled_interp([x], xp, fp, left, right).item()
1068 else:
-> 1069 return compiled_interp(x, xp, fp, left, right)
1070
1071
TypeError: Cannot cast array data from dtype('O') to dtype('float64') according to the rule 'safe'
Я понимаю, что интерполяция с NumPy не работает на объекте.
Но если я пытаюсь теперь интерполировать недостающие значения, понижая единицы, это работает:
s3 = s2['depth'].astype(float).interpolate(method='values')
Это дает:
Как я могу получить назад блок в колонке глубины?
Я не могу найти какой-либо трюк, чтобы положить обратно блок ...
Любая помощь будет принята с благодарностью. Спасибо
Почему бы не размножить все в нужном столбце на 1 метр? –
вы имеете в виду как 's2 ['depth'] * pq.m'? Это не работает. Он всегда игнорирует устройство. Не важно, какую комбинацию я стараюсь. – Julien
Были некоторые разговоры о поддержке этого. См. Здесь проблему github: https://github.com/pydata/pandas/issues/2494 – TomAugspurger