Sha*_*ang 3 python dataframe python-3.x pandas
我在Python3.x中有以下pandas DataFrame:
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
Run Code Online (Sandbox Code Playgroud)
有两列,ID和pattern.pattern长度最长的字符串位于第一行,len('AAABCDEE')长度为8.
我的目标是标准化字符串,使它们的长度相同,尾随空格为?.
这是输出应该是什么样子:
>>> df
ID pattern
0 first AAABCDEE
1 second ABBBBD??
2 third CCCDE???
3 fourth AA??????
4 fifth ABCDE???
Run Code Online (Sandbox Code Playgroud)
如果我能够创建尾随空格NaN,那么我可以尝试以下方法:
df = df.applymap(lambda x: int(x) if pd.notnull(x) else str("?"))
Run Code Online (Sandbox Code Playgroud)
但我不确定如何有效地(1)找到最长的字符串pattern和(2)然后添加NaN字符串的结尾到这个长度?这可能是一种令人费解的方法......
你可以用 str.pad
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
Run Code Online (Sandbox Code Playgroud)
Series.str.ljust在获取列中的最大字符串长度后,您可以使用此方法.
df.pattern.str.ljust(df.pattern.str.len().max(), '?')
# 0 AAABCDEE
# 1 ABBBBD??
# 2 CCCDE???
# 3 AA??????
# 4 ABCDE???
# Name: pattern, dtype: object
Run Code Online (Sandbox Code Playgroud)
在源熊猫0.22.0 这里就可以看出,ljust是完全等同于pad用side='right',所以挑选无论你找到更加清晰.
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |