如何在 Pandas 中将 DataFrame 列转换为字符串

Jinku Hu 2020年6月25日 2020年6月9日 Pandas Pandas DataFrame Pandas DataFrame Column
  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 列标题获取为列表
  • 如何删除 Pandas DataFrame 列
  • 如何在 Pandas 中将 DataFrame 列转换为日期时间
  • 如何在 Pandas DataFrame 中将浮点数转换为整数
  • 如何按一列的值对 Pandas DataFrame 进行排序
  • 如何用 group-by 和 sum 获得 Pandas 总和
  • 相关文章 - Pandas DataFrame Column

  • 如何将 Pandas DataFrame 列标题获取为列表
  • 如何删除 Pandas DataFrame 列
  • 如何在 Pandas 中将 DataFrame 列转换为日期时间
  • 如何获得 Pandas 列中元素总和
  • 如何更改 Panas DataFrame 列的顺序