python notebook 팬더 롤링 적용은 아무 것도하지 않습니다.



python pandas install (1)

이것이 접근 할 수있는 한 가지 방법이 있습니다. rollingnumpy 방법과 효율성과 관련된 래퍼 (wrapper)이며, 이는 그렇지 않습니다 . 숫자가 아닌 열을 롤링 할 수 있도록 비슷한 API 만 제공합니다.

암호:

import pandas as pd

class MyDataFrame(pd.DataFrame):

    @property
    def _constructor(self):
        return MyDataFrame

    def rolling_object(self, window, column, default):
        return pd.concat(
            [self[column].shift(i) for i in range(window)],
            axis=1).fillna(default).T

이렇게하면 rolling_object 메서드가있는 사용자 정의 데이터 프레임 클래스가 만들어집니다. 한 번에 하나의 열에서만 작동한다는 점에서 팬더와 잘 맞지 않습니다.

테스트 코드 :

df2 = MyDataFrame({'date': ['2015-01-01', '2015-01-02', '2015-01-03'],
                   'value': ['a', 'b', 'c'],
                   'num': [1, 2, 3]
                   })

print(df2.rolling_object(2, 'value', '').apply(lambda x: '.'.join(x)))

결과 :

0     a.
1    b.a
2    c.b
dtype: object

다음과 같은 DataFrame이 있습니다.

df2 = pd.DataFrame({'date': ['2015-01-01', '2015-01-02', '2015-01-03'],
                    'value': ['a', 'b', 'a']})

         date value
0  2015-01-01     a
1  2015-01-02     b
2  2015-01-03     a

사용자 지정 롤링 기능을 적용하는 방법을 이해하려고합니다. 나는 이것을 시도했다 :

df2.rolling(2).apply(lambda x: 1)

그러나 이것은 나에게 원래의 DataFrame을 돌려 준다.

         date value
0  2015-01-01     a
1  2015-01-02     b
2  2015-01-03     a

다음과 같이 다른 DataFrame이있는 경우 :

df3 = pd.DataFrame({'a': [1, 2, 3], 'value': [4, 5, 6]})

동일한 롤링 적용이 효과가있는 것 같습니다.

df3.rolling(2).apply(lambda x: 1)

     a  value
0  NaN    NaN
1  1.0    1.0
2  1.0    1.0

왜 이것이 첫 번째 DataFrame에서 작동하지 않습니까?

팬더 버전 : 0.20.2

Python 버전 : 2.7.10

최신 정보

그래서, df2 의 컬럼은 객체 타입이라는 것을 df2 습니다. 반면에, 람다 함수의 출력은 정수입니다. df3 의 열은 모두 정수 열입니다. 나는 이것이 apply 이 효과가없는 이유라고 가정하고 있습니다.

다음 작동 하지 않습니다 .

df2.rolling(2).apply(lambda x: 'a')
         date value
0  2015-01-01     a
1  2015-01-02     b
2  2015-01-03     a

또한, 람다 함수의 출력이 정수가 아닌 문자열이되도록 롤링 기준으로 value 열의 문자를 연결하려고한다고 가정 해 보겠습니다. 다음은 또한 작동하지 않습니다 :

df2.rolling(2).apply(lambda x: '.'.join(x))

         date value
0  2015-01-01     a
1  2015-01-02     b
2  2015-01-03     a

무슨 일 이니? 판다의 객체 유형 열에 롤링 작업을 적용 할 수 있습니까?





pandas