λ€μμ λ΄κ° λ°λΌν λ¨κ³μ λλ€. ν¬λ(0.12.0)λ₯Ό μ¬μ©νκ³ μμ΅λλ€.
In [1]: import pandas as pd
In [4]: dataFrame = pd.read_csv('./test.csv')
In [7]: dataFrame
Out[7]:
r1 r2 r3 r4 r5
0 NaN 3.5 NaN NaN 5
1 4.5 NaN 4 NaN NaN
2 1.5 NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN
5 4.5 NaN 4 NaN NaN
6 NaN NaN NaN NaN NaN
In [8]: dataFrame['mean'] = dataFrame.mean(axis=1)
In [9]: dataFrame
Out[9]:
r1 r2 r3 r4 r5 mean
0 NaN 3.5 NaN NaN 5 4.25
1 4.5 NaN 4 NaN NaN 4.25
2 1.5 NaN NaN NaN NaN 1.50
3 NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN
5 4.5 NaN 4 NaN NaN 4.25
6 NaN NaN NaN NaN NaN NaN
In [10]: dataFrame.dtypes
Out[10]:
r1 float64
r2 float64
r3 float64
r4 float64
r5 float64
mean float64
dtype: object
In [11]: meanCenteredDataFrame = dataFrame.apply(lambda x: x -x['mean'])
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-11-e6cc746e933b> in <module>()
----> 1 meanCenteredDataFrame = dataFrame.apply(lambda x: x -x['mean'])
//anaconda/lib/python2.7/site-packages/pandas/core/frame.pyc in apply(self, func, axis, broadcast, raw, args, **kwds)
4414 return self._apply_raw(f, axis)
4415 else:
-> 4416 return self._apply_standard(f, axis)
4417 else:
4418 return self._apply_broadcast(f, axis)
//anaconda/lib/python2.7/site-packages/pandas/core/frame.pyc in _apply_standard(self, func, axis, ignore_failures)
4489 # no k defined yet
4490 pass
-> 4491 raise e
4492
4493
KeyError: ('mean', u'occurred at index r1')
In [12]: dataFrame.fillna(0,inplace=True)
In [13]: meanCenteredDataFrame = dataFrame.apply(lambda x: x -x['mean'])
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-13-e6cc746e933b> in <module>()
----> 1 meanCenteredDataFrame = dataFrame.apply(lambda x: x -x['mean'])
Type: DataFrame
String Form:
r1 r2 r3 r4 r5 mean
0 0.0 3.5 0 0 5 4.25
//anaconda/lib/python2.7/site-packages/pandas/core/frame.pyc in apply(self, func, axis, broadcast, raw, args, **kwds)
4414 return self._apply_raw(f, axis)
4415 else:
-> 4416 return self._apply_standard(f, axis)
4417 else:
4418 return self._apply_broadcast(f, axis)
//anaconda/lib/python2.7/site-packages/pandas/core/frame.pyc in _apply_standard(self, func, axis, ignore_failures)
4489 # no k defined yet
4490 pass
-> 4491 raise e
4492
4493
KeyError: ('mean', u'occurred at index r1')
λ λΉμ μ΄ μ¬μ©νκ³ μνλ μκ° axis=1
μ ν€μλ μΈμ apply
:
In [21]: df
Out[21]:
r1 r2 r3 r4 r5 mean
0 NaN 3.5 NaN NaN 5 4.25
1 4.5 NaN 4 NaN NaN 4.25
2 1.5 NaN NaN NaN NaN 1.50
3 NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN
5 4.5 NaN 4 NaN NaN 4.25
6 NaN NaN NaN NaN NaN NaN
[7 rows x 6 columns]
In [22]: df.apply(lambda x: x - x['mean'], axis=1)
Out[22]:
r1 r2 r3 r4 r5 mean
0 NaN -0.75 NaN NaN 0.75 0
1 0.25 NaN -0.25 NaN NaN 0
2 0.00 NaN NaN NaN NaN 0
3 NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN
5 0.25 NaN -0.25 NaN NaN 0
6 NaN NaN NaN NaN NaN NaN
[7 rows x 6 columns]
df.apply
λ κΈ°λ³Έμ μΌλ‘ μ΄ λ°©μμΌλ‘ μλνλ―λ‘( axis=0
) r1
μ΄μμ μμν λ mean
ν©λλ€.
νλ κ²μ΄ λ μ’μ΅λλ€.
df.sub(df['νκ· '],μΆ='μΈλ±μ€')
http://pandas.pydata.org/pandas-docs/dev/basics.html#matching -broadcasting-behavior μ°Έμ‘°
@jreback
μλ μ€μ
λλ€. κ°μ¬ν©λλ€
κ°μ₯ μ μ©ν λκΈ
λ λΉμ μ΄ μ¬μ©νκ³ μνλ μκ°
axis=1
μ ν€μλ μΈμapply
:df.apply
λ κΈ°λ³Έμ μΌλ‘ μ΄ λ°©μμΌλ‘ μλνλ―λ‘(axis=0
)r1
μ΄μμ μμν λmean
ν©λλ€.