日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pandas object转float_Pandas中文官档~基础用法6

發(fā)布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pandas object转float_Pandas中文官档~基础用法6 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

呆鳥云:“這一系列長篇終于連載完了,還請大家關(guān)注 Python 大咖談,這里專注 Python 數(shù)據(jù)分析,后期呆鳥還會給大家分享更多 Pandas 好文。”

數(shù)據(jù)類型

大多數(shù)情況下,pandas 使用 Numpy 數(shù)組、Series 或 DataFrame 里某列的數(shù)據(jù)類型。Numpy 支持 float、int、bool、timedelta[ns]、datetime64[ns],注意,Numpy 不支持帶時區(qū)信息的 datetime。

Pandas 與第三方支持庫對 Numpy 類型系統(tǒng)進(jìn)行了擴(kuò)充,本節(jié)只介紹 pandas 的內(nèi)部擴(kuò)展。如需了解自行編寫與 pandas 配合的擴(kuò)展類型,請參閱擴(kuò)展類型,參閱擴(kuò)展數(shù)據(jù)類型了解第三方支持庫提供的擴(kuò)展類型。

下表列出了 pandas 擴(kuò)展類型,參閱列出的文檔內(nèi)容,查看每種類型的詳情。

數(shù)據(jù)種類數(shù)據(jù)類型標(biāo)量數(shù)組文檔
帶時區(qū)的
日期時間
DatetimeTZTimestamparrays.
DatetimeArray
Time zone handling
類別型Categorical(無)CategoricalCategorical data
時間段PeriodPeriodarrays.
PeriodArray
Time span representation
稀疏數(shù)據(jù)Sparse(無)arrays.
SparseArray
Sparse data structures
時間間隔IntervalIntervalarrays.
IntervalArray
IntervalIndex
空整型Int64...(無)arrays.
IntegerArray
Nullable integer data type

此表要橫屏看

Pandas 用 object 存儲字符串。

雖然, object 數(shù)據(jù)類型能夠存儲任何對象,但應(yīng)盡量避免這種操作,要了解與其它支持庫與方法的性能與交互操作,參閱 對象轉(zhuǎn)換。

DataFrame 的 dtypes 屬性用起來很方便,以 Series 形式返回每列的數(shù)據(jù)類型。

In?[328]:?dft?=?pd.DataFrame({'A':?np.random.rand(3),
???.....:?????????????????????'B':?1,
???.....:?????????????????????'C':?'foo',
???.....:?????????????????????'D':?pd.Timestamp('20010102'),
???.....:?????????????????????'E':?pd.Series([1.0]?*?3).astype('float32'),
???.....:?????????????????????'F':?False,
???.....:?????????????????????'G':?pd.Series([1]?*?3,?dtype='int8')})
???.....:?

In?[329]:?dft
Out[329]:?
??????????A??B????C??????????D????E??????F??G
0??0.035962??1??foo?2001-01-02??1.0??False??1
1??0.701379??1??foo?2001-01-02??1.0??False??1
2??0.281885??1??foo?2001-01-02??1.0??False??1

In?[330]:?dft.dtypes
Out[330]:?
A???????????float64
B?????????????int64
C????????????object
D????datetime64[ns]
E???????????float32
F??????????????bool
G??????????????int8
dtype:?object

要查看 Series 的數(shù)據(jù)類型,用 dtype 屬性。

In?[331]:?dft['A'].dtype
Out[331]:?dtype('float64')

Pandas 對象單列中含多種類型的數(shù)據(jù)時,該列的數(shù)據(jù)類型為可適配于各類數(shù)據(jù)的數(shù)據(jù)類型,通常為 object。

#?整數(shù)被強(qiáng)制轉(zhuǎn)換為浮點數(shù)
In?[332]:?pd.Series([1,?2,?3,?4,?5,?6.])
Out[332]:?
0????1.0
1????2.0
2????3.0
3????4.0
4????5.0
5????6.0
dtype:?float64

#?字符串?dāng)?shù)據(jù)決定了該?Series?的數(shù)據(jù)類型為?``object``
In?[333]:?pd.Series([1,?2,?3,?6.,?'foo'])
Out[333]:?
0??????1
1??????2
2??????3
3??????6
4????foo
dtype:?object

DataFrame.dtypes.value_counts() 用于統(tǒng)計 DataFrame 里各列數(shù)據(jù)類型的數(shù)量。

In?[334]:?dft.dtypes.value_counts()
Out[334]:?
float32???????????1
object????????????1
bool??????????????1
int8??????????????1
float64???????????1
datetime64[ns]????1
int64?????????????1
dtype:?int64

多種數(shù)值型數(shù)據(jù)類型可以在 DataFrame 里共存。如果只傳遞一種數(shù)據(jù)類型,不論是通過 dtype 關(guān)鍵字直接傳遞,還是通過 ndarray 或 Series 傳遞,都會保存至 DataFrame 操作。此外,不同數(shù)值型數(shù)據(jù)類型不會合并。示例如下:

In?[335]:?df1?=?pd.DataFrame(np.random.randn(8,?1),?columns=['A'],?dtype='float32')

In?[336]:?df1
Out[336]:?
??????????A
0??0.224364
1??1.890546
2??0.182879
3??0.787847
4?-0.188449
5??0.667715
6?-0.011736
7?-0.399073

In?[337]:?df1.dtypes
Out[337]:?
A????float32
dtype:?object

In?[338]:?df2?=?pd.DataFrame({'A':?pd.Series(np.random.randn(8),?dtype='float16'),
???.....:?????????????????????'B':?pd.Series(np.random.randn(8)),
???.....:?????????????????????'C':?pd.Series(np.array(np.random.randn(8),
???.....:?????????????????????????????????????????????dtype='uint8'))})
???.....:?

In?[339]:?df2
Out[339]:?
??????????A?????????B????C
0??0.823242??0.256090????0
1??1.607422??1.426469????0
2?-0.333740?-0.416203??255
3?-0.063477??1.139976????0
4?-1.014648?-1.193477????0
5??0.678711??0.096706????0
6?-0.040863?-1.956850????1
7?-0.357422?-0.714337????0

In?[340]:?df2.dtypes
Out[340]:?
A????float16
B????float64
C??????uint8
dtype:?object

默認(rèn)值

整數(shù)的默認(rèn)類型為 int64,浮點數(shù)的默認(rèn)類型為 float64,這里的默認(rèn)值與系統(tǒng)平臺無關(guān),不管是 32 位系統(tǒng),還是 64 位系統(tǒng)都是一樣的。下列代碼返回的結(jié)果都是 int64:

In?[341]:?pd.DataFrame([1,?2],?columns=['a']).dtypes
Out[341]:?
a????int64
dtype:?object

In?[342]:?pd.DataFrame({'a':?[1,?2]}).dtypes
Out[342]:?
a????int64
dtype:?object

In?[343]:?pd.DataFrame({'a':?1},?index=list(range(2))).dtypes
Out[343]:?
a????int64
dtype:?object

注意,Numpy 創(chuàng)建數(shù)組時,會根據(jù)系統(tǒng)選擇類型。下列代碼在 32 位系統(tǒng)上返回 int32。

In?[344]:?frame?=?pd.DataFrame(np.array([1,?2]))

向上轉(zhuǎn)型

與其它類型合并時,要用到向上轉(zhuǎn)型,這里指的是從現(xiàn)有類型轉(zhuǎn)換為另一種類型,如int 變?yōu)?float。

In?[345]:?df3?=?df1.reindex_like(df2).fillna(value=0.0)?+?df2

In?[346]:?df3
Out[346]:?
??????????A?????????B??????C
0??1.047606??0.256090????0.0
1??3.497968??1.426469????0.0
2?-0.150862?-0.416203??255.0
3??0.724370??1.139976????0.0
4?-1.203098?-1.193477????0.0
5??1.346426??0.096706????0.0
6?-0.052599?-1.956850????1.0
7?-0.756495?-0.714337????0.0

In?[347]:?df3.dtypes
Out[347]:?
A????float32
B????float64
C????float64
dtype:?object

DataFrame.to_numpy() 返回多個數(shù)據(jù)類型里用的最多的數(shù)據(jù)類型,這里指的是輸出結(jié)果的數(shù)據(jù)類型是適用于所有同質(zhì) Numpy 數(shù)組的數(shù)據(jù)類型。這里會強(qiáng)制執(zhí)行向上轉(zhuǎn)型。

In?[348]:?df3.to_numpy().dtype
Out[348]:?dtype('float64')

astype

astype() 方法顯式地把一種數(shù)據(jù)類型轉(zhuǎn)換為另一種,默認(rèn)返回的是復(fù)制數(shù)據(jù),就算數(shù)據(jù)類型沒有改變也會執(zhí)行復(fù)制操作,copy=False 可以改變默認(rèn)操作模式。此外,如果 astype 無效會觸發(fā)異常。

向上轉(zhuǎn)型一般都會遵循 numpy 的規(guī)則。如果操作中涉及兩種不同類型的數(shù)據(jù),返回的將是更通用的那種數(shù)據(jù)類型。

In?[349]:?df3
Out[349]:?
??????????A?????????B??????C
0??1.047606??0.256090????0.0
1??3.497968??1.426469????0.0
2?-0.150862?-0.416203??255.0
3??0.724370??1.139976????0.0
4?-1.203098?-1.193477????0.0
5??1.346426??0.096706????0.0
6?-0.052599?-1.956850????1.0
7?-0.756495?-0.714337????0.0

In?[350]:?df3.dtypes
Out[350]:?
A????float32
B????float64
C????float64
dtype:?object

#?轉(zhuǎn)換數(shù)據(jù)類型
In?[351]:?df3.astype('float32').dtypes
Out[351]:?
A????float32
B????float32
C????float32
dtype:?object

用 astype() 把一列或多列轉(zhuǎn)換為指定類型 。

In?[352]:?dft?=?pd.DataFrame({'a':?[1,?2,?3],?'b':?[4,?5,?6],?'c':?[7,?8,?9]})

In?[353]:?dft[['a',?'b']]?=?dft[['a',?'b']].astype(np.uint8)

In?[354]:?dft
Out[354]:?
???a??b??c
0??1??4??7
1??2??5??8
2??3??6??9

In?[355]:?dft.dtypes
Out[355]:?
a????uint8
b????uint8
c????int64
dtype:?object

0.19.0 版新增。

astype() 通過字典指定哪些列轉(zhuǎn)換為哪些類型。

In?[356]:?dft1?=?pd.DataFrame({'a':?[1,?0,?1],?'b':?[4,?5,?6],?'c':?[7,?8,?9]})

In?[357]:?dft1?=?dft1.astype({'a':?np.bool,?'c':?np.float64})

In?[358]:?dft1
Out[358]:?
???????a??b????c
0???True??4??7.0
1??False??5??8.0
2???True??6??9.0

In?[359]:?dft1.dtypes
Out[359]:?
a???????bool
b??????int64
c????float64
dtype:?object

用 astype() 與 loc() 為部分列轉(zhuǎn)換指定類型時,會發(fā)生向上轉(zhuǎn)型。

loc() 嘗試分配當(dāng)前的數(shù)據(jù)類型,而 [] 則會從右方獲取數(shù)據(jù)類型并進(jìn)行覆蓋。因此,下列代碼會產(chǎn)出意料之外的結(jié)果:

In?[360]:?dft?=?pd.DataFrame({'a':?[1,?2,?3],?'b':?[4,?5,?6],?'c':?[7,?8,?9]})

In?[361]:?dft.loc[:,?['a',?'b']].astype(np.uint8).dtypes
Out[361]:?
a????uint8
b????uint8
dtype:?object

In?[362]:?dft.loc[:,?['a',?'b']]?=?dft.loc[:,?['a',?'b']].astype(np.uint8)

In?[363]:?dft.dtypes
Out[363]:?
a????int64
b????int64
c????int64
dtype:?object

對象轉(zhuǎn)換

Pandas 提供了多種函數(shù)可以把 object 從一種類型強(qiáng)制轉(zhuǎn)為另一種類型。這是因為,數(shù)據(jù)有時存儲的是正確類型,但在保存時卻存成了 object 類型,此時,用 DataFrame.infer_objects() 與 Series.infer_objects() 方法即可把數(shù)據(jù)轉(zhuǎn)換為正確的類型。

In?[364]:?import?datetime

In?[365]:?df?=?pd.DataFrame([[1,?2],
???.....:????????????????????['a',?'b'],
???.....:????????????????????[datetime.datetime(2016,?3,?2),
???.....:?????????????????????datetime.datetime(2016,?3,?2)]])
???.....:?

In?[366]:?df?=?df.T

In?[367]:?df
Out[367]:?
???0??1??????????2
0??1??a?2016-03-02
1??2??b?2016-03-02

In?[368]:?df.dtypes
Out[368]:?
0????????????object
1????????????object
2????datetime64[ns]
dtype:?object

因為數(shù)據(jù)被轉(zhuǎn)置,所以把原始列的數(shù)據(jù)類型改成了 object,但使用 infer_objects 后就變正確了。

In?[369]:?df.infer_objects().dtypes
Out[369]:?
0?????????????int64
1????????????object
2????datetime64[ns]
dtype:?object

下列函數(shù)可以應(yīng)用于一維數(shù)組與標(biāo)量,執(zhí)行硬轉(zhuǎn)換,把對象轉(zhuǎn)換為指定類型。

  • `to_numeric()`,轉(zhuǎn)換為數(shù)值型

In?[370]:?m?=?['1.1',?2,?3]

In?[371]:?pd.to_numeric(m)
Out[371]:?array([1.1,?2.?,?3.?])
  • `to_datetime()`,轉(zhuǎn)換為 datetime 對象

In?[372]:?import?datetime

In?[373]:?m?=?['2016-07-09',?datetime.datetime(2016,?3,?2)]

In?[374]:?pd.to_datetime(m)
Out[374]:?DatetimeIndex(['2016-07-09',?'2016-03-02'],?dtype='datetime64[ns]',?freq=None)
  • `to_timedelta()`,轉(zhuǎn)換為 timedelta 對象。

In?[375]:?m?=?['5us',?pd.Timedelta('1day')]

In?[376]:?pd.to_timedelta(m)
Out[376]:?TimedeltaIndex(['0?days?00:00:00.000005',?'1?days?00:00:00'],?dtype='timedelta64[ns]',?freq=None)

如需強(qiáng)制轉(zhuǎn)換,則要加入 error 參數(shù),指定 pandas 怎樣處理不能轉(zhuǎn)換為成預(yù)期類型或?qū)ο蟮臄?shù)據(jù)。errors 參數(shù)的默認(rèn)值為 False,指的是在轉(zhuǎn)換過程中,遇到任何問題都觸發(fā)錯誤。設(shè)置為 errors='coerce' 時,pandas 會忽略錯誤,強(qiáng)制把問題數(shù)據(jù)轉(zhuǎn)換為 pd.NaT(datetime 與 timedelta),或 np.nan(數(shù)值型)。讀取數(shù)據(jù)時,如果大部分要轉(zhuǎn)換的數(shù)據(jù)是數(shù)值型或 datetime,這種操作非常有用,但偶爾也會有非制式數(shù)據(jù)混合在一起,可能會導(dǎo)致展示數(shù)據(jù)缺失:

In?[377]:?import?datetime

In?[378]:?m?=?['apple',?datetime.datetime(2016,?3,?2)]

In?[379]:?pd.to_datetime(m,?errors='coerce')
Out[379]:?DatetimeIndex(['NaT',?'2016-03-02'],?dtype='datetime64[ns]',?freq=None)

In?[380]:?m?=?['apple',?2,?3]

In?[381]:?pd.to_numeric(m,?errors='coerce')
Out[381]:?array([nan,??2.,??3.])

In?[382]:?m?=?['apple',?pd.Timedelta('1day')]

In?[383]:?pd.to_timedelta(m,?errors='coerce')
Out[383]:?TimedeltaIndex([NaT,?'1?days'],?dtype='timedelta64[ns]',?freq=None)

error 參數(shù)還有第三個選項,error='ignore'。轉(zhuǎn)換數(shù)據(jù)時會忽略錯誤,直接輸出問題數(shù)據(jù):

In?[384]:?import?datetime

In?[385]:?m?=?['apple',?datetime.datetime(2016,?3,?2)]

In?[386]:?pd.to_datetime(m,?errors='ignore')
Out[386]:?Index(['apple',?2016-03-02?00:00:00],?dtype='object')

In?[387]:?m?=?['apple',?2,?3]

In?[388]:?pd.to_numeric(m,?errors='ignore')
Out[388]:?array(['apple',?2,?3],?dtype=object)

In?[389]:?m?=?['apple',?pd.Timedelta('1day')]

In?[390]:?pd.to_timedelta(m,?errors='ignore')
Out[390]:?array(['apple',?Timedelta('1?days?00:00:00')],?dtype=object)

執(zhí)行轉(zhuǎn)換操作時,to_numeric() 還有一個參數(shù),downcast,即向下轉(zhuǎn)型,可以把數(shù)值型轉(zhuǎn)換為減少內(nèi)存占用的數(shù)據(jù)類型:

In?[391]:?m?=?['1',?2,?3]

In?[392]:?pd.to_numeric(m,?downcast='integer')???#?smallest?signed?int?dtype
Out[392]:?array([1,?2,?3],?dtype=int8)

In?[393]:?pd.to_numeric(m,?downcast='signed')????#?same?as?'integer'
Out[393]:?array([1,?2,?3],?dtype=int8)

In?[394]:?pd.to_numeric(m,?downcast='unsigned')??#?smallest?unsigned?int?dtype
Out[394]:?array([1,?2,?3],?dtype=uint8)

In?[395]:?pd.to_numeric(m,?downcast='float')?????#?smallest?float?dtype
Out[395]:?array([1.,?2.,?3.],?dtype=float32)

上述方法僅能應(yīng)用于一維數(shù)組、列表或標(biāo)量;不能直接用于 DataFrame 等多維對象。不過,用 apply(),可以快速為每列應(yīng)用函數(shù):

In?[396]:?import?datetime

In?[397]:?df?=?pd.DataFrame([
???.....:?????['2016-07-09',?datetime.datetime(2016,?3,?2)]]?*?2,?dtype='O')
???.....:?

In?[398]:?df
Out[398]:?
????????????0????????????????????1
0??2016-07-09??2016-03-02?00:00:00
1??2016-07-09??2016-03-02?00:00:00

In?[399]:?df.apply(pd.to_datetime)
Out[399]:?
???????????0??????????1
0?2016-07-09?2016-03-02
1?2016-07-09?2016-03-02

In?[400]:?df?=?pd.DataFrame([['1.1',?2,?3]]?*?2,?dtype='O')

In?[401]:?df
Out[401]:?
?????0??1??2
0??1.1??2??3
1??1.1??2??3

In?[402]:?df.apply(pd.to_numeric)
Out[402]:?
?????0??1??2
0??1.1??2??3
1??1.1??2??3

In?[403]:?df?=?pd.DataFrame([['5us',?pd.Timedelta('1day')]]?*?2,?dtype='O')

In?[404]:?df
Out[404]:?
?????0????????????????1
0??5us??1?days?00:00:00
1??5us??1?days?00:00:00

In?[405]:?df.apply(pd.to_timedelta)
Out[405]:?
????????????????0??????1
0?00:00:00.000005?1?days
1?00:00:00.000005?1?days

各種坑

對 integer 數(shù)據(jù)執(zhí)行選擇操作時,可以很輕而易舉地把數(shù)據(jù)轉(zhuǎn)換為 floating 。pandas 會保存輸入數(shù)據(jù)的數(shù)據(jù)類型,以防未引入 nans 的情況。參閱 對整數(shù) NA 空值的支持。

In?[406]:?dfi?=?df3.astype('int32')

In?[407]:?dfi['E']?=?1

In?[408]:?dfi
Out[408]:?
???A??B????C??E
0??1??0????0??1
1??3??1????0??1
2??0??0??255??1
3??0??1????0??1
4?-1?-1????0??1
5??1??0????0??1
6??0?-1????1??1
7??0??0????0??1

In?[409]:?dfi.dtypes
Out[409]:?
A????int32
B????int32
C????int32
E????int64
dtype:?object

In?[410]:?casted?=?dfi[dfi?>?0]

In?[411]:?casted
Out[411]:?
?????A????B??????C??E
0??1.0??NaN????NaN??1
1??3.0??1.0????NaN??1
2??NaN??NaN??255.0??1
3??NaN??1.0????NaN??1
4??NaN??NaN????NaN??1
5??1.0??NaN????NaN??1
6??NaN??NaN????1.0??1
7??NaN??NaN????NaN??1

In?[412]:?casted.dtypes
Out[412]:?
A????float64
B????float64
C????float64
E??????int64
dtype:?object

浮點數(shù)類型未改變。

In?[413]:?dfa?=?df3.copy()

In?[414]:?dfa['A']?=?dfa['A'].astype('float32')

In?[415]:?dfa.dtypes
Out[415]:?
A????float32
B????float64
C????float64
dtype:?object

In?[416]:?casted?=?dfa[df2?>?0]

In?[417]:?casted
Out[417]:?
??????????A?????????B??????C
0??1.047606??0.256090????NaN
1??3.497968??1.426469????NaN
2???????NaN???????NaN??255.0
3???????NaN??1.139976????NaN
4???????NaN???????NaN????NaN
5??1.346426??0.096706????NaN
6???????NaN???????NaN????1.0
7???????NaN???????NaN????NaN

In?[418]:?casted.dtypes
Out[418]:?
A????float32
B????float64
C????float64
dtype:?object

基于 `dtype` 選擇列

select_dtypes() 方法基于 dtype 選擇列。

首先,創(chuàng)建一個由多種數(shù)據(jù)類型組成的 DataFrame:

In?[419]:?df?=?pd.DataFrame({'string':?list('abc'),
???.....:????????????????????'int64':?list(range(1,?4)),
???.....:????????????????????'uint8':?np.arange(3,?6).astype('u1'),
???.....:????????????????????'float64':?np.arange(4.0,?7.0),
???.....:????????????????????'bool1':?[True,?False,?True],
???.....:????????????????????'bool2':?[False,?True,?False],
???.....:????????????????????'dates':?pd.date_range('now',?periods=3),
???.....:????????????????????'category':?pd.Series(list("ABC")).astype('category')})
???.....:?

In?[420]:?df['tdeltas']?=?df.dates.diff()

In?[421]:?df['uint64']?=?np.arange(3,?6).astype('u8')

In?[422]:?df['other_dates']?=?pd.date_range('20130101',?periods=3)

In?[423]:?df['tz_aware_dates']?=?pd.date_range('20130101',?periods=3,?tz='US/Eastern')

In?[424]:?df
Out[424]:?
??string??int64??uint8??float64??bool1??bool2??????????????????????dates?category?tdeltas??uint64?other_dates????????????tz_aware_dates
0??????a??????1??????3??????4.0???True??False?2019-08-22?15:49:01.870038????????A?????NaT???????3??2013-01-01?2013-01-01?00:00:00-05:00
1??????b??????2??????4??????5.0??False???True?2019-08-23?15:49:01.870038????????B??1?days???????4??2013-01-02?2013-01-02?00:00:00-05:00
2??????c??????3??????5??????6.0???True??False?2019-08-24?15:49:01.870038????????C??1?days???????5??2013-01-03?2013-01-03?00:00:00-05:00

該 DataFrame 的數(shù)據(jù)類型:

In?[425]:?df.dtypes
Out[425]:?
string????????????????????????????????object
int64??????????????????????????????????int64
uint8??????????????????????????????????uint8
float64??????????????????????????????float64
bool1???????????????????????????????????bool
bool2???????????????????????????????????bool
dates?????????????????????????datetime64[ns]
category????????????????????????????category
tdeltas??????????????????????timedelta64[ns]
uint64????????????????????????????????uint64
other_dates???????????????????datetime64[ns]
tz_aware_dates????datetime64[ns,?US/Eastern]
dtype:?object

select_dtypes() 有兩個參數(shù),include 與 exclude,用于實現(xiàn)“提取這些數(shù)據(jù)類型的列” (include)或 “提取不是這些數(shù)據(jù)類型的列”(exclude)。

選擇 bool 型的列,示例如下:

In?[426]:?df.select_dtypes(include=[bool])
Out[426]:?
???bool1??bool2
0???True??False
1??False???True
2???True??False

該方法還支持輸入 NumPy 數(shù)據(jù)類型的名稱:

In?[427]:?df.select_dtypes(include=['bool'])
Out[427]:?
???bool1??bool2
0???True??False
1??False???True
2???True??False

select_dtypes() 還支持通用數(shù)據(jù)類型。

比如,選擇所有數(shù)值型與布爾型的列,同時,排除無符號整數(shù):

In?[428]:?df.select_dtypes(include=['number',?'bool'],?exclude=['unsignedinteger'])
Out[428]:?
???int64??float64??bool1??bool2?tdeltas
0??????1??????4.0???True??False?????NaT
1??????2??????5.0??False???True??1?days
2??????3??????6.0???True??False??1?days

選擇字符串型的列必須要用 object:

In?[429]:?df.select_dtypes(include=['object'])
Out[429]:?
??string
0??????a
1??????b
2??????c

要查看 numpy.number 等通用 dtype 的所有子類型,可以定義一個函數(shù),返回子類型樹:

In?[430]:?def?subdtypes(dtype):
???.....:?????subs?=?dtype.__subclasses__()
???.....:?????if?not?subs:
???.....:?????????return?dtype
???.....:?????return?[dtype,?[subdtypes(dt)?for?dt?in?subs]]
???.....:?

所有 Numpy 數(shù)據(jù)類型都是 numpy.generic 的子類:

In?[431]:?subdtypes(np.generic)
Out[431]:?
[numpy.generic,
?[[numpy.number,
???[[numpy.integer,
?????[[numpy.signedinteger,
???????[numpy.int8,
????????numpy.int16,
????????numpy.int32,
????????numpy.int64,
????????numpy.int64,
????????numpy.timedelta64]],
??????[numpy.unsignedinteger,
???????[numpy.uint8,
????????numpy.uint16,
????????numpy.uint32,
????????numpy.uint64,
????????numpy.uint64]]]],
????[numpy.inexact,
?????[[numpy.floating,
???????[numpy.float16,?numpy.float32,?numpy.float64,?numpy.float128]],
??????[numpy.complexfloating,
???????[numpy.complex64,?numpy.complex128,?numpy.complex256]]]]]],
??[numpy.flexible,
???[[numpy.character,?[numpy.bytes_,?numpy.str_]],
????[numpy.void,?[numpy.record]]]],
??numpy.bool_,
??numpy.datetime64,
??numpy.object_]]

注意:Pandas 支持 category 與 datetime64[ns, tz] 類型,但這兩種類型未整合到 Numpy 的架構(gòu)里,因此,上面的函數(shù)沒有顯示。

Pandas 中文官檔 ~ 基礎(chǔ)用法1
Pandas 中文官檔 ~ 基礎(chǔ)用法2
Pandas 中文官檔 ~ 基礎(chǔ)用法3
Pandas 中文官檔 ~ 基礎(chǔ)用法4
Pandas 中文官檔 ~ 基礎(chǔ)用法5

總結(jié)

以上是生活随笔為你收集整理的pandas object转float_Pandas中文官档~基础用法6的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。