JSON 変数を複数のペア変数に変換しました。
その結果、次のようなデータセットがあります
home_city_1 home_number_1 home_city_2 home_number_2 home_city_3 home_number_3 home_city_4 home_number_4
Coeur D Alene、ID 13.0 Hayden、ID 8.0 Renton、WA 2.0 NaN NaN
ワシントン州スポケーン 3.0 ワシントン州アンバー 2.0 NaN NaN NaN NaN
Sioux Falls, SD 9.0 Stone Mountain, GA 2.0 Watertown, SD 2.0 Dell Rapids, SD 2.0
Ludowici, GA 11.0 NaN NaN NaN NaN NaN NaN
このデータセットには 600 列 (300 * 2) があります。
これらの条件で値を変換したい:
home_city_# 列の値の「 」または「,」を「_」(バーの下) に変更します。たとえば、「Sioux Falls, SD」から「Sioux_Falls__SD」へ
欠損値を「m」(home_city_# で欠損) または -1 (home_number_# で欠損) に変換
やってみた
customer_home_city_json_2 = customer_home_city_json_1.replace(',', '_')
customer_home_city_json_2 = customer_home_city_json_2 .apply(ラムダ x: x.replace('null', "-1"))
やってみる
citys = [col の 'home_city_' の場合、df.columns の col の col]
を使用して正規表現を使用します。
numbers = [col の 'home_number_' の場合、df.columns の col の col]df[都市] = df[都市].replace("\s|,", "_", regex=True)
df[都市] = df[都市].fillna('m')
df[数字] = df[数字].fillna(-1)正しいタスクを実行するには、'home_city_#' と 'home_number_#' の列名を取得する必要があります。これは最初の 2 行で行われます。
" "
と","
を"_"
に置き換えるには、replace()
を regex=True\s
(ショートカット) を挿入し、すべての空白を削除します。これはに置き換えることもできます。
NaN を埋めるために、
fillna
を使用し、目的の値-1
またはm
を設定します。列に型を混在させないことをお勧めします。そのため、「数字」には-1
を、都市にはm
を使用します。例
これがあなたの DataFrame です
home_city_1 home_number_1 home_city_2 home_number_2
0 Coeur D Alene、ID 13.0 ヘイデン、ID 8.0
1 スポケーン、ワシントン州 3.0 アンバー、ワシントン州 2.0
2 スー フォールズ、SD 9.0 ストーン マウンテン、GA 2.0
3 ルドウィチ、GA 11.0 NaN NaN出力は
home_city_1 home_number_1 home_city_2 home_number_2
0 Coeur_D_Alene__ID 13.0 Hayden__ID 8.0
1 スポケーン__WA 3.0 アンバー__WA 2.0
2 Sioux_Falls__SD 9.0 Stone_Mountain__GA 2.0
3 ルドウィチ__GA 11.0 m -1.0
df
がデータフレームの名前であることを考慮して、これを試すことができます:
city_cols = df.filter(regex='^home_city').columns
df[city_cols] = (df[city_cols]
。交換(''、 '-')
.replace(',', '-', regex=True)
.fillna('m'))
number_cols = df.filter(regex='^home_number').columns
df[列数] = df[列数].fillna(-1)
pandas.DataFrame を使用する.filter
と regex を使用すると、同じプレフィックスを持つ列でフィルター処理できます。