Wie man eine DataFrame-Spalte in eine Zeichenkette in Pandas konvertiert
-
Pandas DataFrame
Series.astype(str)
Methode -
DataFrame
apply
-Methode zur Bearbeitung von Elementen in der Spalte
Wir werden Methoden zur Konvertierung von Pandas DataFrame-Spalte in String
vorstellen.
- Pandas DataFrame
Series.astype(str)
Methode - DataFrame
apply
-Methode zur Bearbeitung von Elementen in einer Spalte
Wir werden in diesem Artikel unten den gleichen DataFrame verwenden.
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)
Methode
Pandas Series astype(dtype)
methode konvertiert die Pandas Series in den angegebenen dtype
Typ.
pandas.Series.astype(str)
Sie konvertiert die Spalte Series
, DataFrame
wie in diesem Artikel in string
(Zeichenkette).
>>> 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
Die astype()
Methode modifiziert die DataFrame
Daten nicht an Ort und Stelle, daher müssen wir die zurückgegebene Pandas Series
der spezifischen DataFrame
Spalte zuweisen.
Wir könnten auch mehrere Spalten gleichzeitig in Zeichenketten konvertieren, indem wir die Namen der Spalten in eckige Klammern setzen, um eine Liste zu bilden.
>>> 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
-Methode zur Bearbeitung von Elementen in der Spalte
apply(func, *args, **kwds)
Die Methode apply()
von DataFrame
wendet die Funktion func
auf jede Spalte oder Zeile an.
Wir könnten der Einfachheit halber die Funktion lambda
anstelle von func
verwenden.
>>> 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
Sie könnten nicht die Methode apply
verwenden, um die Funktion auf mehrere Spalten anzuwenden.
>>> 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