先看乙個非常簡單的例子:
a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
df = pd.dataframe(a)
有什麼方法可以將列轉換為適當的型別?例如,上面的例子,如何將列2和3轉為浮點數?有沒有辦法將資料轉換為dataframe格式時指定型別?或者是建立dataframe,然後通過某種方法更改每列的型別?理想情況下,希望以動態的方式做到這一點,因為可以有數百個列,明確指定哪些列是哪種型別太麻煩。可以假定每列都包含相同型別的值。
可以用的方法簡單列舉如下:
如果要建立乙個dataframe,可以直接通過dtype引數指定型別:
df = pd.dataframe(a, dtype='float') #示例1
df = pd.dataframe(data=d, dtype=np.int8) #示例2
df = pd.read_csv("somefile.csv", dtype = )
下面是乙個字串seriess
的例子,它的dtype為object
:
>>> s = pd.series(['1', '2', '4.7', 'pandas', '10'])
>>> s01
1224.7
3 pandas410
dtype: object
使用to_numeric
轉為數值。預設情況下,它不能處理字母型的字串'pandas':
>>> pd.to_numeric(s) # or pd.to_numeric(s, errors='raise')
valueerror: unable to parse string
可以將無效值強制轉換為nan
,如下所示:
>>> pd.to_numeric(s, errors='coerce')
01.0
12.0
24.7
3 nan
410.0
dtype: float64
如果遇到無效值,第三個選項就是忽略該操作:
>>> pd.to_numeric(s, errors='ignore')
# the original series is returned untouched
對於某個dataframe:
>>> a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
>>> df = pd.dataframe(a, columns=['col1','col2','col3'])
>>> df
col1 col2 col3
0 a 1.2
4.21 b 70
0.03
2 x 5
0
然後可以寫:
那麼'col2'和'col3'根據需要具有float64
型別。
但是,可能不知道哪些列可以可靠地轉換為數字型別。在這種情況下,設定引數:
然後該函式將被應用於整個dataframe,可以轉換為數字型別的列將被轉換,而不能(例如,它們包含非數字字串或日期)的列將被單獨保留。
另外pd.to_datetime
和pd.to_timedelta
可將資料轉換為日期和時間戳。
版本0.21.0引入了infer_objects()
方法,用於將具有物件資料型別的dataframe的列轉換為更具體的型別。
例如,用兩列物件型別建立乙個dataframe,其中乙個儲存整數,另乙個儲存整數的字串:
>>> df = pd.dataframe(, dtype='object')
>>> df.dtypes
a object
b object
dtype: object
然後使用infer_objects()
,可以將列'a'的型別更改為int64:
>>> df = df.infer_objects()
>>> df.dtypes
a int64
b object
dtype: object
由於'b'的值是字串,而不是整數,因此'b'一直保留。
如果試圖強制將兩列轉換為整數型別,可以使用df.astype(int)
。
示例如下:
a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
df = pd.dataframe(a, columns=['one', 'two', 'three'])
dfout[16]:
one two three
0 a 1.2
4.21 b 70
0.03
2 x 5
0df.dtypes
out[17]:
one object
two object
three object
df[['two', 'three']] = df[['two', 'three']].astype(float)
df.dtypes
out[19]:
one object
two float64
three float64
在Pandas中更改列的資料型別
先看乙個非常簡單的例子 a a 1.2 4.2 b 70 0.03 x 5 0 df pd.dataframe a 有什麼方法可以將列轉換為適當的型別?例如,上面的例子,如何將列2和3轉為浮點數?有沒有辦法將資料轉換為dataframe格式時指定型別?或者是建立dataframe,然後通過某種方法更...
在Pandas中更改列的資料型別 方法總結
先看乙個非常簡單的例子 a a 1.2 4.2 b 70 0.03 x 5 0 df pd.dataframe a 有什麼方法可以將列轉換為適當的型別?例如,上面的例子,如何將列2和3轉為浮點數?有沒有辦法將資料轉換為dataframe格式時指定型別?或者是建立dataframe,然後通過某種方法更...
pandas中的更改資料型別
在處理資料時,可能會遇到資料型別不一致的問題。例如,通過爬蟲採集到的資料都是整型的資料,在使用資料時希望保留兩位小數點,這時就需要將資料的型別轉換成浮點型。針對這種問題,既可以建立pandas物件時明確指定資料的型別,也可以使用astype 方法和to numeric 函式進行轉換,具體如下。一 通...