Ich habe die folgenden Pandas DataFrame in Python3.x:
import pandas as pd
dict1 = {
'ID':['first', 'second', 'third', 'fourth', 'fifth'],
'pattern':['AAABCDEE', 'ABBBBD', 'CCCDE', 'AA', 'ABCDE']
}
df = pd.DataFrame(dict1)
>>> df
ID pattern
0 first AAABCDEE
1 second ABBBBD
2 third CCCDE
3 fourth AA
4 fifth ABCDE
Es gibt zwei Spalten, ID
und pattern
. Die Zeichenfolge in pattern
mit der längsten Länge befindet sich in der ersten Zeile len('AAABCDEE')
mit der Länge 8.
Mein Ziel ist es, die Zeichenfolgen so zu standardisieren, dass sie dieselbe Länge haben und die Leerzeichen nach ?
stehen.
So sollte die Ausgabe aussehen:
>>> df
ID pattern
0 first AAABCDEE
1 second ABBBBD??
2 third CCCDE???
3 fourth AA??????
4 fifth ABCDE???
Wenn ich die nachgestellten Leerzeichen NaN
erstellen könnte, könnte ich Folgendes versuchen:
df = df.applymap(lambda x: int(x) if pd.notnull(x) else str("?"))
Aber ich bin mir nicht sicher, wie man effizient (1) die längste Zeichenfolge in pattern
finden und (2) dann NaN
hinzufügen und das Ende der Zeichenfolgen bis zu dieser Länge hinzufügen kann? Dies kann ein komplizierter Ansatz sein ...
3 Antworten
Sie können Series.str.ljust
, nachdem Sie die maximale Zeichenfolgenlänge in der Spalte ermittelt haben.
df.pattern.str.ljust(df.pattern.str.len().max(), '?')
# 0 AAABCDEE
# 1 ABBBBD??
# 2 CCCDE???
# 3 AA??????
# 4 ABCDE???
# Name: pattern, dtype: object
In der Quelle für Pandas 0.22.0
hier ist zu sehen, dass ljust
mit side='right'
völlig gleichbedeutend mit pad
ist. Wählen Sie also das aus, was Sie klarer finden.
Sie können str.pad
verwenden
df.pattern.str.pad(width=df.pattern.str.len().max(),side='right',fillchar='?')
Out[1154]:
0 AAABCDEE
1 ABBBBD??
2 CCCDE???
3 AA??????
4 ABCDE???
Name: pattern, dtype: object
Python 3.6 F-String
n = df.pattern.str.len().max()
df.assign(pattern=[f'{i:?<{n}s}' for i in df.pattern])
ID pattern
0 first AAABCDEE
1 second ABBBBD??
2 third CCCDE???
3 fourth AA??????
4 fifth ABCDE???
Verwandte Fragen
Neue Fragen
python
Python ist eine dynamisch typisierte Mehrzweck-Programmiersprache mit mehreren Paradigmen. Es wurde entwickelt, um schnell zu lernen, zu verstehen, zu verwenden und eine saubere und einheitliche Syntax durchzusetzen. Bitte beachten Sie, dass Python 2 ab dem 01.01.2020 offiziell nicht mehr unterstützt wird. Fügen Sie für versionenspezifische Python-Fragen das Tag [python-2.7] oder [python-3.x] hinzu. Wenn Sie eine Python-Variante (z. B. Jython, PyPy) oder eine Bibliothek (z. B. Pandas und NumPy) verwenden, fügen Sie diese bitte in die Tags ein.