呆鳥(niǎo)云:“覺(jué)得有用,就請(qǐng)點(diǎn)個(gè)贊纯衍,哈哈”
函數(shù)應(yīng)用
不管是為 pandas 對(duì)象應(yīng)用自定義函數(shù)栋齿,還是應(yīng)用其它第三方函數(shù),都離不開(kāi)以下三種方法襟诸。用哪種方法取決于操作的對(duì)象是 DataFrame
或 Series
瓦堵,是行或列,還是元素歌亲。
表級(jí)函數(shù)應(yīng)用:
pipe()
行列級(jí)函數(shù)應(yīng)用:
apply()
聚合 API:
agg()
與transform()
元素級(jí)函數(shù)應(yīng)用:
applymap()
表級(jí)函數(shù)應(yīng)用
雖然可以把 DataFrame
與 Series
傳遞給函數(shù)谷丸。不過(guò),通過(guò)鏈?zhǔn)秸{(diào)用函數(shù)時(shí)应结,最好使用 pipe()
方法刨疼。對(duì)比以下兩種方式:
# f, g, and h are functions taking and returning ``DataFrames``
>>> f(g(h(df), arg1=1), arg2=2, arg3=3)
下列代碼與上述代碼等效
>>> (df.pipe(h)
... .pipe(g, arg1=1)
... .pipe(f, arg2=2, arg3=3))
pandas 鼓勵(lì)使用第二種方式,即鏈?zhǔn)椒椒ǘ炝洹T阪準(zhǔn)椒椒ㄖ姓{(diào)用自定義函數(shù)或第三方支持庫(kù)函數(shù)時(shí)揩慕,用 pipe
更容易,與用 pandas 自身方法一樣扮休。
上例中迎卤,f
、g
與 h
這幾個(gè)函數(shù)都把 DataFrame
當(dāng)作首位參數(shù)玷坠。要是想把數(shù)據(jù)作為第二個(gè)參數(shù)蜗搔,該怎么辦?本例中八堡,pipe
為元組 (callable,data_keyword
)形式樟凄。.pipe
把 DataFrame
作為元組里指定的參數(shù)。
下例用 statsmodels 擬合回歸兄渺。該 API 先接收一個(gè)公式缝龄,DataFrame
是第二個(gè)參數(shù),data
。要傳遞函數(shù)叔壤,則要用pipe
接收關(guān)鍵詞對(duì) (sm.ols,'data'
)瞎饲。
In [138]: import statsmodels.formula.api as sm
In [139]: bb = pd.read_csv('data/baseball.csv', index_col='id')
In [140]: (bb.query('h > 0')
.....: .assign(ln_h=lambda df: np.log(df.h))
.....: .pipe((sm.ols, 'data'), 'hr ~ ln_h + year + g + C(lg)')
.....: .fit()
.....: .summary()
.....: )
.....:
Out[140]:
<class 'statsmodels.iolib.summary.Summary'>
"""
OLS Regression Results
==============================================================================
Dep. Variable: hr R-squared: 0.685
Model: OLS Adj. R-squared: 0.665
Method: Least Squares F-statistic: 34.28
Date: Thu, 22 Aug 2019 Prob (F-statistic): 3.48e-15
Time: 15:48:59 Log-Likelihood: -205.92
No. Observations: 68 AIC: 421.8
Df Residuals: 63 BIC: 432.9
Df Model: 4
Covariance Type: nonrobust
===============================================================================
coef std err t P>|t| [0.025 0.975]
-------------------------------------------------------------------------------
Intercept -8484.7720 4664.146 -1.819 0.074 -1.78e+04 835.780
C(lg)[T.NL] -2.2736 1.325 -1.716 0.091 -4.922 0.375
ln_h -1.3542 0.875 -1.547 0.127 -3.103 0.395
year 4.2277 2.324 1.819 0.074 -0.417 8.872
g 0.1841 0.029 6.258 0.000 0.125 0.243
==============================================================================
Omnibus: 10.875 Durbin-Watson: 1.999
Prob(Omnibus): 0.004 Jarque-Bera (JB): 17.298
Skew: 0.537 Prob(JB): 0.000175
Kurtosis: 5.225 Cond. No. 1.49e+07
==============================================================================
Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 1.49e+07. This might indicate that there are
strong multicollinearity or other numerical problems.
unix 的 pipe
與后來(lái)出現(xiàn)的 dplyr 及 magrittr 啟發(fā)了pipe
方法,在此炼绘,引入了 R 語(yǔ)言里用于讀取 pipe 的操作符 (%>%
)嗅战。pipe
的實(shí)現(xiàn)思路非常清晰,仿佛 Python 源生的一樣俺亮。強(qiáng)烈建議大家閱讀 pipe()
的源代碼驮捍。
行列級(jí)函數(shù)應(yīng)用
apply()
方法可以沿著 DataFrame 的軸應(yīng)用任何函數(shù),比如铅辞,描述性統(tǒng)計(jì)方法厌漂,該方法支持 axis
參數(shù)萨醒。
In [141]: df.apply(np.mean)
Out[141]:
one 0.811094
two 1.360588
three 0.187958
dtype: float64
In [142]: df.apply(np.mean, axis=1)
Out[142]:
a 1.583749
b 0.734929
c 1.133683
d -0.166914
dtype: float64
In [143]: df.apply(lambda x: x.max() - x.min())
Out[143]:
one 1.051928
two 1.632779
three 1.840607
dtype: float64
In [144]: df.apply(np.cumsum)
Out[144]:
one two three
a 1.394981 1.772517 NaN
b 1.738035 3.684640 -0.050390
c 2.433281 5.163008 1.177045
d NaN 5.442353 0.563873
In [145]: df.apply(np.exp)
Out[145]:
one two three
a 4.034899 5.885648 NaN
b 1.409244 6.767440 0.950858
c 2.004201 4.385785 3.412466
d NaN 1.322262 0.541630
apply()
方法還支持通過(guò)函數(shù)名字符串調(diào)用函數(shù)斟珊。
In [146]: df.apply('mean')
Out[146]:
one 0.811094
two 1.360588
three 0.187958
dtype: float64
In [147]: df.apply('mean', axis=1)
Out[147]:
a 1.583749
b 0.734929
c 1.133683
d -0.166914
dtype: float64
默認(rèn)情況下,apply()
調(diào)用的函數(shù)返回的類(lèi)型會(huì)影響 DataFrame.apply
輸出結(jié)果的類(lèi)型富纸。
函數(shù)返回的是
Series
時(shí)囤踩,最終輸出的結(jié)果是DataFrame
。輸出的列與函數(shù)返回的Series
索引相匹配晓褪。函數(shù)返回其它任意類(lèi)型時(shí)堵漱,輸出結(jié)果是
Series
。
result_type
會(huì)覆蓋默認(rèn)行為涣仿,該參數(shù)有三個(gè)選項(xiàng):reduce
勤庐、broadcast
、expand
好港。這些選項(xiàng)決定了列表型返回值是否擴(kuò)展為 DataFrame
愉镰。
用好 apply()
可以了解數(shù)據(jù)集的很多信息。比如可以提取每列的最大值對(duì)應(yīng)的日期:
In [148]: tsdf = pd.DataFrame(np.random.randn(1000, 3), columns=['A', 'B', 'C'],
.....: index=pd.date_range('1/1/2000', periods=1000))
.....:
In [149]: tsdf.apply(lambda x: x.idxmax())
Out[149]:
A 2000-08-06
B 2001-01-18
C 2001-07-18
dtype: datetime64[ns]
還可以向 apply()
方法傳遞額外的參數(shù)與關(guān)鍵字參數(shù)钧汹。比如下例中要應(yīng)用的這個(gè)函數(shù):
def subtract_and_divide(x, sub, divide=1):
return (x - sub) / divide
可以用下列方式應(yīng)用該函數(shù):
df.apply(subtract_and_divide, args=(5,), divide=3)
為每行或每列執(zhí)行 Series
方法的功能也很實(shí)用:
In [150]: tsdf
Out[150]:
A B C
2000-01-01 -0.158131 -0.232466 0.321604
2000-01-02 -1.810340 -3.105758 0.433834
2000-01-03 -1.209847 -1.156793 -0.136794
2000-01-04 NaN NaN NaN
2000-01-05 NaN NaN NaN
2000-01-06 NaN NaN NaN
2000-01-07 NaN NaN NaN
2000-01-08 -0.653602 0.178875 1.008298
2000-01-09 1.007996 0.462824 0.254472
2000-01-10 0.307473 0.600337 1.643950
In [151]: tsdf.apply(pd.Series.interpolate)
Out[151]:
A B C
2000-01-01 -0.158131 -0.232466 0.321604
2000-01-02 -1.810340 -3.105758 0.433834
2000-01-03 -1.209847 -1.156793 -0.136794
2000-01-04 -1.098598 -0.889659 0.092225
2000-01-05 -0.987349 -0.622526 0.321243
2000-01-06 -0.876100 -0.355392 0.550262
2000-01-07 -0.764851 -0.088259 0.779280
2000-01-08 -0.653602 0.178875 1.008298
2000-01-09 1.007996 0.462824 0.254472
2000-01-10 0.307473 0.600337 1.643950
apply()
有一個(gè)參數(shù) raw
丈探,默認(rèn)值為 False
,在應(yīng)用函數(shù)前拔莱,使用該參數(shù)可以將每行或列轉(zhuǎn)換為 Series
碗降。該參數(shù)為 True
時(shí),傳遞的函數(shù)接收 ndarray 對(duì)象塘秦,若不需要索引功能讼渊,這種操作能顯著提高性能。
聚合 API
0.20.0 版新增尊剔。
聚合 API 可以快速精偿、簡(jiǎn)潔地執(zhí)行多個(gè)聚合操作。Pandas 對(duì)象支持多個(gè)類(lèi)似的 API,如 groupby API笔咽、window functions API搔预、resample API。聚合函數(shù)為DataFrame.aggregate()
叶组,它的別名是 DataFrame.agg()
拯田。
這里使用與前例類(lèi)似的 DataFrame
:
In [152]: tsdf = pd.DataFrame(np.random.randn(10, 3), columns=['A', 'B', 'C'],
.....: index=pd.date_range('1/1/2000', periods=10))
.....:
In [153]: tsdf.iloc[3:7] = np.nan
In [154]: tsdf
Out[154]:
A B C
2000-01-01 1.257606 1.004194 0.167574
2000-01-02 -0.749892 0.288112 -0.757304
2000-01-03 -0.207550 -0.298599 0.116018
2000-01-04 NaN NaN NaN
2000-01-05 NaN NaN NaN
2000-01-06 NaN NaN NaN
2000-01-07 NaN NaN NaN
2000-01-08 0.814347 -0.257623 0.869226
2000-01-09 -0.250663 -1.206601 0.896839
2000-01-10 2.169758 -1.333363 0.283157
應(yīng)用單個(gè)函數(shù)時(shí),該操作與 apply()
等效甩十,這里也可以用字符串表示聚合函數(shù)名船庇。下面的聚合函數(shù)輸出的結(jié)果為 Series
:
In [155]: tsdf.agg(np.sum)
Out[155]:
A 3.033606
B -1.803879
C 1.575510
dtype: float64
In [156]: tsdf.agg('sum')
Out[156]:
A 3.033606
B -1.803879
C 1.575510
dtype: float64
# 因?yàn)閼?yīng)用的是單個(gè)函數(shù),該操作與`.sum()` 是等效的
In [157]: tsdf.sum()
Out[157]:
A 3.033606
B -1.803879
C 1.575510
dtype: float64
對(duì) Series
進(jìn)行單個(gè)聚合操作侣监,返回的是標(biāo)量值:
In [158]: tsdf.A.agg('sum')
Out[158]: 3.033606102414146
多函數(shù)聚合
還可以用列表形式傳遞多個(gè)聚合函數(shù)鸭轮。每個(gè)函數(shù)在輸出結(jié)果 DataFrame
里以行的形式顯示,行名是每個(gè)聚合函數(shù)的函數(shù)名橄霉。
In [159]: tsdf.agg(['sum'])
Out[159]:
A B C
sum 3.033606 -1.803879 1.57551
多個(gè)函數(shù)輸出多行:
In [160]: tsdf.agg(['sum', 'mean'])
Out[160]:
A B C
sum 3.033606 -1.803879 1.575510
mean 0.505601 -0.300647 0.262585
對(duì)于 Series
窃爷,多個(gè)函數(shù)返回的結(jié)果也是 Series
,其索引為函數(shù)名:
In [161]: tsdf.A.agg(['sum', 'mean'])
Out[161]:
sum 3.033606
mean 0.505601
Name: A, dtype: float64
傳遞 lambda
函數(shù)時(shí)姓蜂,輸出名為 <lambda>
的行:
In [162]: tsdf.A.agg(['sum', lambda x: x.mean()])
Out[162]:
sum 3.033606
<lambda> 0.505601
Name: A, dtype: float64
應(yīng)用自定義函數(shù)時(shí)按厘,則該函數(shù)名為輸出結(jié)果的行名:
In [163]: def mymean(x):
.....: return x.mean()
.....:
In [164]: tsdf.A.agg(['sum', mymean])
Out[164]:
sum 3.033606
mymean 0.505601
Name: A, dtype: float64
用字典實(shí)現(xiàn)聚合
指定為哪些列應(yīng)用哪些聚合函數(shù)時(shí),需要把包含列名與標(biāo)量(或標(biāo)量列表)的字典傳遞給 DataFrame.agg
钱慢。
注意:這里輸出結(jié)果的順序不是固定的逮京,要想讓輸出順序與輸入順序一致,請(qǐng)使用 OrderedDict
束莫。
In [165]: tsdf.agg({'A': 'mean', 'B': 'sum'})
Out[165]:
A 0.505601
B -1.803879
dtype: float64
輸入的參數(shù)是列表時(shí)懒棉,輸出結(jié)果為 DataFrame
,并以矩陣形式顯示所有聚合函數(shù)的計(jì)算結(jié)果览绿,且輸出結(jié)果由所有唯一函數(shù)組成策严。未執(zhí)行聚合操作的列輸出結(jié)果為 NaN
值:
In [166]: tsdf.agg({'A': ['mean', 'min'], 'B': 'sum'})
Out[166]:
A B
mean 0.505601 NaN
min -0.749892 NaN
sum NaN -1.803879
多種 Dtype
DataFrame
里包含不能執(zhí)行聚合操作的多種 Dtype 時(shí),.agg
只計(jì)算可以執(zhí)行聚合的列挟裂。這與 groupby
的 .agg
操作類(lèi)似:
In [167]: mdf = pd.DataFrame({'A': [1, 2, 3],
.....: 'B': [1., 2., 3.],
.....: 'C': ['foo', 'bar', 'baz'],
.....: 'D': pd.date_range('20130101', periods=3)})
.....:
In [168]: mdf.dtypes
Out[168]:
A int64
B float64
C object
D datetime64[ns]
dtype: object
In [169]: mdf.agg(['min', 'sum'])
Out[169]:
A B C D
min 1 1.0 bar 2013-01-01
sum 6 6.0 foobarbaz NaT
自定義 Describe
用 .agg()
可以輕松地創(chuàng)建與內(nèi)置 describe 函數(shù)類(lèi)似的自定義 describe 函數(shù)享钞。
In [170]: from functools import partial
In [171]: q_25 = partial(pd.Series.quantile, q=0.25)
In [172]: q_25.__name__ = '25%'
In [173]: q_75 = partial(pd.Series.quantile, q=0.75)
In [174]: q_75.__name__ = '75%'
In [175]: tsdf.agg(['count', 'mean', 'std', 'min', q_25, 'median', q_75, 'max'])
Out[175]:
A B C
count 6.000000 6.000000 6.000000
mean 0.505601 -0.300647 0.262585
std 1.103362 0.887508 0.606860
min -0.749892 -1.333363 -0.757304
25% -0.239885 -0.979600 0.128907
median 0.303398 -0.278111 0.225365
75% 1.146791 0.151678 0.722709
max 2.169758 1.004194 0.896839
Transform API
0.20.0 版新增。
transform()
方法返回的結(jié)果與原始數(shù)據(jù)具有同樣索引诀蓉,且大小相同栗竖。這個(gè) API 支持同時(shí)處理多種操作,不用一個(gè)一個(gè)操作渠啤,且該 API 與 .agg
API 類(lèi)似狐肢。
下面先創(chuàng)建一個(gè) DataFrame:
In [176]: tsdf = pd.DataFrame(np.random.randn(10, 3), columns=['A', 'B', 'C'],
.....: index=pd.date_range('1/1/2000', periods=10))
.....:
In [177]: tsdf.iloc[3:7] = np.nan
In [178]: tsdf
Out[178]:
A B C
2000-01-01 -0.428759 -0.864890 -0.675341
2000-01-02 -0.168731 1.338144 -1.279321
2000-01-03 -1.621034 0.438107 0.903794
2000-01-04 NaN NaN NaN
2000-01-05 NaN NaN NaN
2000-01-06 NaN NaN NaN
2000-01-07 NaN NaN NaN
2000-01-08 0.254374 -1.240447 -0.201052
2000-01-09 -0.157795 0.791197 -1.144209
2000-01-10 -0.030876 0.371900 0.061932
這里轉(zhuǎn)換的是整個(gè) DataFrame。.transform()
支持 Numpy 函數(shù)沥曹、字符串函數(shù)及自定義函數(shù)份名。
In [179]: tsdf.transform(np.abs)
Out[179]:
A B C
2000-01-01 0.428759 0.864890 0.675341
2000-01-02 0.168731 1.338144 1.279321
2000-01-03 1.621034 0.438107 0.903794
2000-01-04 NaN NaN NaN
2000-01-05 NaN NaN NaN
2000-01-06 NaN NaN NaN
2000-01-07 NaN NaN NaN
2000-01-08 0.254374 1.240447 0.201052
2000-01-09 0.157795 0.791197 1.144209
2000-01-10 0.030876 0.371900 0.061932
In [180]: tsdf.transform('abs')
Out[180]:
A B C
2000-01-01 0.428759 0.864890 0.675341
2000-01-02 0.168731 1.338144 1.279321
2000-01-03 1.621034 0.438107 0.903794
2000-01-04 NaN NaN NaN
2000-01-05 NaN NaN NaN
2000-01-06 NaN NaN NaN
2000-01-07 NaN NaN NaN
2000-01-08 0.254374 1.240447 0.201052
2000-01-09 0.157795 0.791197 1.144209
2000-01-10 0.030876 0.371900 0.061932
In [181]: tsdf.transform(lambda x: x.abs())
Out[181]:
A B C
2000-01-01 0.428759 0.864890 0.675341
2000-01-02 0.168731 1.338144 1.279321
2000-01-03 1.621034 0.438107 0.903794
2000-01-04 NaN NaN NaN
2000-01-05 NaN NaN NaN
2000-01-06 NaN NaN NaN
2000-01-07 NaN NaN NaN
2000-01-08 0.254374 1.240447 0.201052
2000-01-09 0.157795 0.791197 1.144209
2000-01-10 0.030876 0.371900 0.061932
這里的 transform()
接受單個(gè)函數(shù)碟联;與 ufunc 等效。
In [182]: np.abs(tsdf)
Out[182]:
A B C
2000-01-01 0.428759 0.864890 0.675341
2000-01-02 0.168731 1.338144 1.279321
2000-01-03 1.621034 0.438107 0.903794
2000-01-04 NaN NaN NaN
2000-01-05 NaN NaN NaN
2000-01-06 NaN NaN NaN
2000-01-07 NaN NaN NaN
2000-01-08 0.254374 1.240447 0.201052
2000-01-09 0.157795 0.791197 1.144209
2000-01-10 0.030876 0.371900 0.061932
.transform()
向 Series
傳遞單個(gè)函數(shù)時(shí)僵腺,返回的結(jié)果也是單個(gè) Series
鲤孵。
In [183]: tsdf.A.transform(np.abs)
Out[183]:
2000-01-01 0.428759
2000-01-02 0.168731
2000-01-03 1.621034
2000-01-04 NaN
2000-01-05 NaN
2000-01-06 NaN
2000-01-07 NaN
2000-01-08 0.254374
2000-01-09 0.157795
2000-01-10 0.030876
Freq: D, Name: A, dtype: float64
多函數(shù) Transform
transform()
調(diào)用多個(gè)函數(shù)時(shí),將生成多重索引 DataFrame辰如。第一層是原始數(shù)據(jù)集的列名普监;第二層是 transform()
調(diào)用的函數(shù)名。
In [184]: tsdf.transform([np.abs, lambda x: x + 1])
Out[184]:
A B C
absolute <lambda> absolute <lambda> absolute <lambda>
2000-01-01 0.428759 0.571241 0.864890 0.135110 0.675341 0.324659
2000-01-02 0.168731 0.831269 1.338144 2.338144 1.279321 -0.279321
2000-01-03 1.621034 -0.621034 0.438107 1.438107 0.903794 1.903794
2000-01-04 NaN NaN NaN NaN NaN NaN
2000-01-05 NaN NaN NaN NaN NaN NaN
2000-01-06 NaN NaN NaN NaN NaN NaN
2000-01-07 NaN NaN NaN NaN NaN NaN
2000-01-08 0.254374 1.254374 1.240447 -0.240447 0.201052 0.798948
2000-01-09 0.157795 0.842205 0.791197 1.791197 1.144209 -0.144209
2000-01-10 0.030876 0.969124 0.371900 1.371900 0.061932 1.061932
為 Series 應(yīng)用多個(gè)函數(shù)時(shí)琉兜,輸出結(jié)果是 DataFrame凯正,列名是 transform()
調(diào)用的函數(shù)名。
In [185]: tsdf.A.transform([np.abs, lambda x: x + 1])
Out[185]:
absolute <lambda>
2000-01-01 0.428759 0.571241
2000-01-02 0.168731 0.831269
2000-01-03 1.621034 -0.621034
2000-01-04 NaN NaN
2000-01-05 NaN NaN
2000-01-06 NaN NaN
2000-01-07 NaN NaN
2000-01-08 0.254374 1.254374
2000-01-09 0.157795 0.842205
2000-01-10 0.030876 0.969124
用字典執(zhí)行 transform
操作
函數(shù)字典可以為每列執(zhí)行指定 transform()
操作豌蟋。
In [186]: tsdf.transform({'A': np.abs, 'B': lambda x: x + 1})
Out[186]:
A B
2000-01-01 0.428759 0.135110
2000-01-02 0.168731 2.338144
2000-01-03 1.621034 1.438107
2000-01-04 NaN NaN
2000-01-05 NaN NaN
2000-01-06 NaN NaN
2000-01-07 NaN NaN
2000-01-08 0.254374 -0.240447
2000-01-09 0.157795 1.791197
2000-01-10 0.030876 1.371900
transform()
的參數(shù)是列表字典時(shí)廊散,生成的是以 transform()
調(diào)用的函數(shù)為名的多重索引 DataFrame。
In [187]: tsdf.transform({'A': np.abs, 'B': [lambda x: x + 1, 'sqrt']})
Out[187]:
A B
absolute <lambda> sqrt
2000-01-01 0.428759 0.135110 NaN
2000-01-02 0.168731 2.338144 1.156782
2000-01-03 1.621034 1.438107 0.661897
2000-01-04 NaN NaN NaN
2000-01-05 NaN NaN NaN
2000-01-06 NaN NaN NaN
2000-01-07 NaN NaN NaN
2000-01-08 0.254374 -0.240447 NaN
2000-01-09 0.157795 1.791197 0.889493
2000-01-10 0.030876 1.371900 0.609836
元素級(jí)函數(shù)應(yīng)用
并非所有函數(shù)都能矢量化梧疲,即接受 Numpy 數(shù)組允睹,返回另一個(gè)數(shù)組或值,DataFrame 的 applymap()
及 Series 的 map()
往声,支持任何接收單個(gè)值并返回單個(gè)值的 Python 函數(shù)擂找。
示例如下:
In [188]: df4
Out[188]:
one two three
a 1.394981 1.772517 NaN
b 0.343054 1.912123 -0.050390
c 0.695246 1.478369 1.227435
d NaN 0.279344 -0.613172
In [189]: def f(x):
.....: return len(str(x))
.....:
In [190]: df4['one'].map(f)
Out[190]:
a 18
b 19
c 18
d 3
Name: one, dtype: int64
In [191]: df4.applymap(f)
Out[191]:
one two three
a 18 17 3
b 19 18 20
c 18 18 16
d 3 19 19
Series.map()
還有個(gè)功能戳吝,可以“連接”或“映射”第二個(gè) Series 定義的值浩销。這與 merging/joining 功能聯(lián)系非常緊密:
In [192]: s = pd.Series(['six', 'seven', 'six', 'seven', 'six'],
.....: index=['a', 'b', 'c', 'd', 'e'])
.....:
In [193]: t = pd.Series({'six': 6., 'seven': 7.})
In [194]: s
Out[194]:
a six
b seven
c six
d seven
e six
dtype: object
In [195]: s.map(t)
Out[195]:
a 6.0
b 7.0
c 6.0
d 7.0
e 6.0
dtype: float64
Pandas 中文官檔 ~ 基礎(chǔ)用法1
Pandas 中文官檔 ~ 基礎(chǔ)用法2
Pandas 中文官檔 ~ 基礎(chǔ)用法3
Pandas 中文官檔 ~ 基礎(chǔ)用法4
Pandas 中文官檔 ~ 基礎(chǔ)用法5