如何在 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
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 总和