apply
は(Series
)と連動しているため、それぞれの値を個別に処理する必要がある場合はapplymap
を使用できます。その後
代わりstr.replace
を使用しての、regexsのためのよりよい作品re.sub
を使用します。
print (stringDataFrame.applymap(lambda x: re.sub(r'[^0-9]', '', x) if (len(x) >= 7) else x))
サンプル:
import pandas as pd
import re
stringDataFrame = pd.DataFrame({'A':['gdgdg454dgd','147ooo2', '123ss45678'],
'B':['gdgdg454dgd','x142', '12345678a'],
'C':['gdgdg454dgd','xx142', '12567dd8']})
print (stringDataFrame)
A B C
0 gdgdg454dgd gdgdg454dgd gdgdg454dgd
1 147ooo2 x142 xx142
2 123ss45678 12345678a 12567dd8
print (stringDataFrame.applymap(lambda x: re.sub(r'[^0-9]', '', x) if (len(x) >= 7) else x))
A B C
0 454 454 454
1 1472 x142 xx142
2 12345678 12345678 125678
はあなたの問題を示している例を提供することはできますか? – IanS
xは系列であり、len(x)はその系列の長さである。個々の弦の長さをチェックしますか? – ayhan