3
鑑於某些數據的下列位:大熊貓DataFrame.groupby的公差
data = {'Object': ['objA', 'objB', 'objC', 'objD', 'objE'],
'Length': [10.1, 10.02, 7.4, 6.24, 5.99]}
df = pd.DataFrame(data)
df
導致以下數據幀:
Out[6]:
Length Object
0 10.10 objA
1 10.02 objB
2 7.40 objC
3 6.24 objD
4 5.99 objE
我想團「長度」列基於+ - 容差。這樣做會給我以下羣體。有點像僞代碼如下:
tolerance = .25
grouped = df.groupby(df['Length'] +- tolerance)
這將導致與分組類似下面的一個:
{(10.10+-.25): [0L, 1L],
(7.40+-.25): [2L],
(6.24+-.25): [3L, 4L]}
環顧四周,人們都建議使用pd.cut和預定義倉,但是,考慮到我的數據集的真實大小和長度的可變性,預先計算bin範圍似乎是一個蠻力解決方案。有沒有人有更優雅/快/熊貓/ numpy-esque解決方案?
您首先需要垃圾箱。否則,你如何區分下一行的10.10 +/- 0.25和10.02 +/- 0.25? – Alexander
當使用pd.cut時,結果總是互斥的,因爲一個值只能存在於binA或binB中,但從來不會同時存在binA和binB? – destructo
我同意@Alexander。爲了獲得對數據的「感覺」,我會用直方圖將它們繪製出來,其中二進制大小是您的測量分辨率(0.01)。您將快速直觀地瞭解您的實際數據。如果您擔心速度問題,並且您確實擁有大量數據,那麼我會將它們放入數據庫中,快速進行比較以解決其他人的問題。 – roadrunner66