如何在 Pandas 中將 DataFrame 列轉換為字串

Jinku Hu 2023年1月30日 2020年6月9日
  1. Pandas DataFrame Series.astype(str) 方法
  2. DataFrame.apply() 方法對列中的元素進行操作
如何在 Pandas 中將 DataFrame 列轉換為字串

我們將介紹將 Pandas DataFrame 列轉換為字串的方法。

  • Pandas Series.astype(str) 方法
  • DataFrame.apply() 方法對列中的元素進行操作

我們將在本文下面使用相同的 DataFrame。

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4.1, 5.2, 6.3],
    'C': ["7", "8", "9"]})

print(df)
print(df.dtypes)
   A    B  C
0  1  4.1  7
1  2  5.2  8
2  3  6.3  9

A      int64
B    float64
C     object
dtype: object

Pandas DataFrame Series.astype(str) 方法

Pandas Series.astype(dtype) 方法將 Pandas 系列轉換為指定的 dtype 型別。

pandas.Series.astype(str)

如本文所述,它將 Series,DataFrame 列轉換為字串。

>>> df
   A    B  C
0  1  4.1  7
1  2  5.2  8
2  3  6.3  9
>>> df['A'] = df['A'].astype(str)
>>> df
   A    B  C
0  1  4.1  7
1  2  5.2  8
2  3  6.3  9
>>> df.dtypes
A     object
B    float64
C     object
dtype: object

astype() 方法不會就地修改 DataFrame 資料,因此我們需要將返回的 Pandas Series 分配給特定的 DataFrame 列。

我們也可以通過將方括號內的名稱放在方括號中以形成列表,將多個列同時轉換為字串。

>>> df[['A','B']] = df[['A','B']].astype(str)
>>> df
   A    B  C
0  1  4.1  7
1  2  5.2  8
2  3  6.3  9
>>> df.dtypes
A    object
B    object
C    object
dtype: object

DataFrame.apply() 方法對列中的元素進行操作

apply(func, *args, **kwds)

DataFrame.apply() 方法將函式 func 應用於每一列或每一行。

為了簡單起見,我們可以使用 lambda 函式代替 func

>>> df['A'] = df['A'].apply(lambda _: str(_))
>>> df
   A    B  C
0  1  4.1  7
1  2  5.2  8
2  3  6.3  9
>>> df.dtypes
A     object
B    float64
C     object
dtype: object

你不能使用 apply 方法將函式應用於多個列。

>>> df[['A','B']] = df[['A','B']].apply(lambda _: str(_))
Traceback (most recent call last):
  File "<pyshell#31>", line 1, in <module>
    df[['A','B']] = df[['A','B']].apply(lambda _: str(_))
  File "D:\WinPython\WPy-3661\python-3.6.6.amd64\lib\site-packages\pandas\core\frame.py", line 3116, in __setitem__
    self._setitem_array(key, value)
  File "D:\WinPython\WPy-3661\python-3.6.6.amd64\lib\site-packages\pandas\core\frame.py", line 3144, in _setitem_array
    self.loc._setitem_with_indexer((slice(None), indexer), value)
  File "D:\WinPython\WPy-3661\python-3.6.6.amd64\lib\site-packages\pandas\core\indexing.py", line 606, in _setitem_with_indexer
    raise ValueError('Must have equal len keys and value '
ValueError: Must have equal len keys and value when setting with an iterable
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

相關文章 - Pandas DataFrame

相關文章 - Pandas DataFrame Column