簡體   English   中英

將所有列從 int64 轉換為 int32

[英]Convert all columns from int64 to int32

我們現在都有一個問題: 在 Pandas更改列的數據類型真的很好解釋了如何更改列的數據類型,但是如果我有一個具有以下df.dtypes的數據df.dtypes df df.dtypes

A  object
B   int64
C   int32
D   object
E   int64
F  float32

如果不明確提及所有int64類型都轉換為int32類型的列名,我該如何更改? 所以想要的結果是:

A  object
B   int32
C   int32
D   object
E   int32
F  float32

您可以創建字典與所有列int64通過D型DataFrame.select_dtypes並將其轉換為int32DataFrame.astype ,但不知道如果沒有大的整數數字失敗:

df = pd.DataFrame({
        'A':list('abcdef'),
         'B':[4,5,4,5,5,4],
         'C':[7,8,9,4,2,3],
         'D':[1,3,5,7,1,0],
         'E':[5,3,6,9,2,4],
         'F':list('aaabbb')
})


d = dict.fromkeys(df.select_dtypes(np.int64).columns, np.int32)
df = df.astype(d)
print (df.dtypes)
A    object
B     int32
C     int32
D     int32
E     int32
F    object
dtype: object

使用DataFrame.select_dtypesDataFrame.astype

# example dataframe
df = pd.DataFrame({'A':list('abc'),
                   'B':[1,2,3],
                   'C':[4,5,6]})

   A  B  C
0  a  1  4
1  b  2  5
2  c  3  6
# as we can see, the integer columns are int64
print(df.dtypes)
A    object
B     int64
C     int64
dtype: object
df = df.astype({col: 'int32' for col in df.select_dtypes('int64').columns})

# int64 columns have been converted to int32
print(df.dtypes)
A    object
B     int32
C     int32
dtype: object

您還可以使用 for 循環遍歷 df 的列並檢查它們的數據類型。

df = pd.DataFrame({'A': ['a','b','c'],
                   'B': [1,2,3],
                   'C': [4.0,5.0,6.0]})
print(df.dtypes)

A     object
B      int64
C    float64
dtype: object

#if it's int64 set it as int32:
for column in df.columns:
    if df[column].dtype == 'int64':
        df[column] = df[column].astype('int32')
print(df.dtypes)

A     object
B      int32
C    float64
dtype: object

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM