📌  相关文章
📜  更改 Pandas Dataframe 中一列或多列的数据类型

📅  最后修改于: 2022-05-13 01:55:06.888000             🧑  作者: Mango

更改 Pandas Dataframe 中一列或多列的数据类型

让我们看看在 Pandas Dataframe 中为一列或多列更改数据类型的不同方法。

方法 #1:使用 DataFrame.astype()

我们可以传递任何Python、 Numpy 或 Pandas 数据类型来将数据框的所有列更改为该类型,或者我们可以传递以列名作为键、数据类型作为值的字典来更改选定列的类型。

# importing pandas as pd
import pandas as pd
  
# sample dataframe
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': ['a', 'b', 'c', 'd', 'e'],
    'C': [1.1, '1.0', '1.3', 2, 5] })
  
# converting all columns to string type
df = df.astype(str)
print(df.dtypes)

输出:

# importing pandas as pd
import pandas as pd
  
# sample dataframe
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': ['a', 'b', 'c', 'd', 'e'],
    'C': [1.1, '1.0', '1.3', 2, 5] })
  
# using dictionary to convert specific columns
convert_dict = {'A': int,
                'C': float
               }
  
df = df.astype(convert_dict)
print(df.dtypes)

输出:
方法 #2:使用 DataFrame.apply()

我们可以将 pandas.to_numeric、pandas.to_datetime 和 pandas.to_timedelta 作为参数传递给apply()函数,以将一列或多列的数据类型分别更改为 numeric、datetime 和 timedelta。

# importing pandas as pd
import pandas as pd
  
# sample dataframe
df = pd.DataFrame({
    'A': [1, 2, 3, '4', '5'],
    'B': ['a', 'b', 'c', 'd', 'e'],
    'C': [1.1, '2.1', 3.0, '4.1', '5.1'] })
  
# using apply method
df[['A', 'C']] = df[['A', 'C']].apply(pd.to_numeric)
print(df.dtypes)

输出:
方法 #3:使用 DataFrame.infer_objects()
此方法通过推断“对象”类型列的数据类型来尝试软转换。非对象和不可转换的列保持不变。

# importing pandas as pd
import pandas as pd
  
# sample dataframe
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': ['a', 'b', 'c', 'd', 'e'],
    'C': [1.1, 2.1, 3.0, 4.1, 5.1]
     }, dtype ='object')
  
# converting datatypes
df = df.infer_objects()
print(df.dtypes)

输出: