データフレーム列を複数の列に分割して、各セルに2つの値のみが含まれるようにする必要があります。現在のデータフレームは次のようになります。
Name | Number | Code |
..............................
Tom | 78797071| 0
Nick | | 89797071
Juli | | 57797074
June | 39797571| 0
Junw | | 23000000|
コードに8桁の数字が含まれている場合は、各列で2桁の数字ごとに分割し、いずれかのDIVに00が含まれている場合は、「不完全」としてマークする必要があります。
新しいデータフレームは次のようになります。
Name | Number | Code | DIV|DIV2|DIV3|DIV4|Incomplete |
........................................................................
Tom | 78797071| 0 | 0 | 0| 0 | 0 |incomplete |
Nick | | 89797071| 89| 79 | 70 | 71 |complete |
Juli | | 57797074| 57| 79 | 70 | 74 |complete |
June | 39797571| 0 | 0| 0| 0 | 0 |complete |
Junw | | 23000000| 23| 00| 00 | 00 |incomplete |
を使用str.findall("..")
して値を分割し、次にjoin
元のdfのリストを分割できます。apply
完全/不完全ステータスを取得するために使用します。
import pandas as pd
df = pd.DataFrame({"Name":["Tom","Nick","Juli","June","Junw"],
"Number":[78797071, 0, 0, 39797571, 0],
"Code":[0, 89797071, 57797074, 0, 23000000]})
df = df.join(pd.DataFrame(df["Code"].astype(str).str.findall("..").values.tolist()).add_prefix('DIV')).fillna("00")
df["Incomplete"] = df.iloc[:,3:7].apply(lambda row: "incomplete" if row.str.contains('00').any() else "complete", axis=1)
print (df)
#
Name Number Code DIV0 DIV1 DIV2 DIV3 Incomplete
0 Tom 78797071 0 00 00 00 00 incomplete
1 Nick 0 89797071 89 79 70 71 complete
2 Juli 0 57797074 57 79 70 74 complete
3 June 39797571 0 00 00 00 00 incomplete
4 Junw 0 23000000 23 00 00 00 incomplete
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加