我正在嘗試撰寫代碼來用不同的字符填充我的熊貓資料框的列。我嘗試使用apply函式用zfill填充'0'并且它有效。
print(df["Date"].apply(lambda x: x.zfill(10)))
但是,當我嘗試使用應用方法對我的資料框使用 pad 函式時,我遇到了錯誤: AttributeError: 'str' object has no attribute 'pad'
我正在嘗試的代碼是:
print(df["Date"].apply(lambda x: x.pad(10, side="left", fillchar="0")))
zfill和pad函式都是pandas.Series.str的一部分。我很困惑為什么pad不作業而zfill作業。我怎樣才能實作這個功能?
完整代碼:
import pandas as pd
from io import StringIO
StringData = StringIO(
"""Date,Time
パンダ,パンダ
パンダサンDA12-3,パンダーサンDA12-3
???????DA12-3,???????DA12-3
"""
)
df = pd.read_csv(StringData, sep=",")
print(df["Date"].apply(lambda x: x.zfill(10))) -- works
print(df["Date"].apply(lambda x: x.pad(10, side="left", fillchar="0"))) -- doesn't work
我正在使用熊貓 1.5.1。
uj5u.com熱心網友回復:
你不應該使用apply,這樣做你不會從Series方法中受益,而是使用純 python str方法:
print(df["Date"].str.zfill(10))
print(df["Date"].str.pad(10, side="left", fillchar="0"))
輸出:
0 0000000パンダ
1 パンダサンDA12-3
2 ???????DA12-3
Name: Date, dtype: object
0 0000000パンダ
1 パンダサンDA12-3
2 ???????DA12-3
Name: Date, dtype: object
多列:
現在,您需要使用apply,但這是DataFrame.apply,不是Series.apply:
df[['col1', 'col2', 'col3']].apply(lambda s: s.str.pad(10, side="left", fillchar="0"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/519486.html
標籤:熊猫数据框
