मैं एक numpy
array
(या pandas
DataFrame
) एक तरह से है कि कम से कम window_size
लंबाई के साथ एक ही मूल्य का केवल सतत श्रृंखला रखा जाता है और सब कुछ किसी और सेट को फ़िल्टर करना चाहते हैंछनन पांडा या कम से कम खिड़की लंबाई के साथ सतत श्रृंखला के लिए NumPy सरणी
[1,1,1,0,0,1,1,1,1,0,0,1,0,0,0,1,1,1,0,1,1,1,1]
जब 4
[0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1]
की एक खिड़की आकार का उपयोग होना चाहिए: 0.
उदाहरण के लिए करने के लिए 0
मैं गिरी कार्यों मुझे नहीं लगता कि इसे यहाँ सही दृष्टिकोण है रोलिंग की प्रकृति के कारण rolling_apply
और scipy.ndimage.filtes.gerneric_filter
लेकिन का उपयोग कर की कोशिश की है (और मैं इस समय इसके साथ अटक कर रहा हूँ)।
मैं यहाँ किसी भी तरह अपना प्रयास सम्मिलित करें:
import numpy as np
import pandas as pd
import scipy
#from scipy import ndimage
df= pd.DataFrame({'x':np.array([1,1,1,0,0,1,1,1,1,0,0,1,0,0,0,1,1,1,0,1,1,1,1])})
df_alt = df.copy()
def filter_df(df, colname, window_size):
rolling_func = lambda z: z.sum() >= window_size
df[colname] = pd.rolling_apply(df[colname],
window_size,
rolling_func,
min_periods=window_size/2,
center = True)
def filter_alt(df, colname, window_size):
rolling_func = lambda z: z.sum() >= window_size
return scipy.ndimage.filters.generic_filter(df[colname].values,
rolling_func,
size = window_size,
origin = 0)
window_size = 4
filter_df(df, 'x', window_size)
print df
filter_alt(df_alt, 'x', window_size)
आप विंडो का आकार से अधिक समय में एक ही मान के अनुक्रम का इलाज कैसे करना चाहेंगे उनकी परिभाषा के नीचे सूचीबद्ध हैं? क्या मूल्य हमेशा समान हैं या क्या वे एक ही सरणी के लिए भिन्न हो सकते हैं? – Stefan
मैं उन्हें 1 की श्रृंखला के रूप में भी रखना चाहता हूं। पसंद: [1,1,1,1,1] -> [1,1,1,1,1] – pho