Python:如果 Address1、Address2、Address3、Address4 列字符串包含 'x',则在 Address4 列中写入 'x'
Python: If column Address1, Address2,Address3,Address4 string contains 'x' then write 'x' in column Address4
我是 python 的新手,我不确定从哪里开始整理我的数据集,
我有客户电子商务销售数据,需要其中一列包含地址的县部分。县在大多数情况下已经在 Address4 列中,但一些客户在 Address1、Address2 或 Address3 中填写了他们的县。
我有一个包含所有 32 个县的数组,所以我想我需要检查每一列 Address1、Address2、Address3、Address4 以查看它们是否包含数组中的一个县,如果找到,请将找到的县写入地址4。
希望这是有道理的。
在这种情况下,我需要从 Address3 找到 longford 并写入 Co Longford,在 Address4 中找到 Donegal 并在 Address 4 中写入 Donegal,所有行都相同,
说这是你的df
df=pd.DataFrame({'Address1':[np.nan, 'jkl','pol','city1', np.nan],'Address2':['lop',np.nan,'pola',np.nan, np.nan],'Address3':[np.nan, np.nan,np.nan,'city13', np.nan],'Address4':[np.nan, np.nan,np.nan,np.nan,'shaka']})
Address1 Address2 Address3 Address4
0 NaN lop NaN NaN
1 jkl NaN NaN NaN
2 pol pola NaN NaN
3 city1 NaN city13 NaN
4 NaN NaN NaN shaka
并说这是您的地址列表
listofAdress=['lop','jkl','pola','city13']
创建一个临时列,每行包含城市列表,不包括列 addresses4
df['temp']=df.iloc[:,:3].values.tolist()
将地图 temp
和 listofAdress
转换为集合并相交,然后删除温度
df=df.assign(Address4=np.where(df.Address4.isna(),(df['temp'].map(set).apply(lambda x:x.intersection(set(listofAdress)))).map(list).str[0],df.Address4)).drop('temp',1)
Address1 Address2 Address3 Address4
0 NaN lop NaN lop
1 jkl NaN NaN jkl
2 pol pola NaN pola
3 city1 NaN city13 city13
4 NaN NaN NaN shaka
我是 python 的新手,我不确定从哪里开始整理我的数据集, 我有客户电子商务销售数据,需要其中一列包含地址的县部分。县在大多数情况下已经在 Address4 列中,但一些客户在 Address1、Address2 或 Address3 中填写了他们的县。
我有一个包含所有 32 个县的数组,所以我想我需要检查每一列 Address1、Address2、Address3、Address4 以查看它们是否包含数组中的一个县,如果找到,请将找到的县写入地址4。 希望这是有道理的。
在这种情况下,我需要从 Address3 找到 longford 并写入 Co Longford,在 Address4 中找到 Donegal 并在 Address 4 中写入 Donegal,所有行都相同,
说这是你的df
df=pd.DataFrame({'Address1':[np.nan, 'jkl','pol','city1', np.nan],'Address2':['lop',np.nan,'pola',np.nan, np.nan],'Address3':[np.nan, np.nan,np.nan,'city13', np.nan],'Address4':[np.nan, np.nan,np.nan,np.nan,'shaka']})
Address1 Address2 Address3 Address4
0 NaN lop NaN NaN
1 jkl NaN NaN NaN
2 pol pola NaN NaN
3 city1 NaN city13 NaN
4 NaN NaN NaN shaka
并说这是您的地址列表
listofAdress=['lop','jkl','pola','city13']
创建一个临时列,每行包含城市列表,不包括列 addresses4
df['temp']=df.iloc[:,:3].values.tolist()
将地图 temp
和 listofAdress
转换为集合并相交,然后删除温度
df=df.assign(Address4=np.where(df.Address4.isna(),(df['temp'].map(set).apply(lambda x:x.intersection(set(listofAdress)))).map(list).str[0],df.Address4)).drop('temp',1)
Address1 Address2 Address3 Address4
0 NaN lop NaN lop
1 jkl NaN NaN jkl
2 pol pola NaN pola
3 city1 NaN city13 city13
4 NaN NaN NaN shaka