मैं एक कॉलम डेटाफ्रेम को फिर से नमूना देना चाहता हूं - अर्थात्, मैं इसे sum() स्टाइल ऑपरेशन के रिवर्स में अपसैंपल करना चाहता हूं, यह मानते हुए कि प्रत्येक बिंदु सम है। मैं विशेष रूप से अंतिम बिंदु के मूल्य की परवाह नहीं करता - मेरे मामले के लिए, यह अप्रासंगिक है।

यहाँ एक सरलीकृत संस्करण है:

   Input  Output
0   10.0    3.33
1    NaN    3.33
2    NaN    3.33
3   24.0    6.00
4    NaN    6.00
5    NaN    6.00
6    NaN    6.00
7   15.0   15.00

क्या ऐसा करने का कोई साफ/पायथनिक तरीका है? मैं पुस्तकालयों को पुन: नमूना करने में ऐसा कुछ भी नहीं ढूंढ पाया, लेकिन एक पुनरावृत्त समाधान को एक साथ हैक करने से पहले मैं अधिक अनुभवी लोगों से पूछना चाहता था।

1
ReyL 26 फरवरी 2019, 04:33

1 उत्तर

सबसे बढ़िया उत्तर

mean द्वारा groupby और transform का उपयोग करें:

df['Input'].fillna(0).groupby(df['Input'].notna().cumsum()).transform('mean')

0     3.333333
1     3.333333
2     3.333333
3     6.000000
4     6.000000
5     6.000000
6     6.000000
7    15.000000
Name: Input, dtype: float64

कहा पे,

df['Input'].notna().cumsum()

0    1
1    1
2    1
3    2
4    2
5    2
6    2
7    3
Name: Input, dtype: int64

यहां विचार गैर-शून्य मान के माध्य की गणना करना है, जिसमें इसके बाद की सभी अशक्त कोशिकाएं शामिल हैं और परिणाम को वापस इनपुट पर प्रसारित करना है। हमें यहां fillna कॉल की आवश्यकता है क्योंकि mean डिफ़ॉल्ट रूप से NaN को अनदेखा कर देगा।

2
cs95 26 फरवरी 2019, 04:40