jea*_*elj 8 python lookup match pandas
我有以下数据帧df:
Customer_ID | 2015 | 2016 |2017 | Year_joined_mailing
ABC 5 6 10 2015
BCD 6 7 3 2016
DEF 10 4 5 2017
GHI 8 7 10 2016
Run Code Online (Sandbox Code Playgroud)
我想在他们加入邮件列表的那一年查找客户的价值并将其保存在新列中.
输出将是:
Customer_ID | 2015 | 2016 |2017 | Year_joined_mailing | Purchases_1st_year
ABC 5 6 10 2015 5
BCD 6 7 3 2016 7
DEF 10 4 5 2017 5
GHI 8 9 10 2016 9
Run Code Online (Sandbox Code Playgroud)
我在python中找到了一些匹配vlookup的解决方案,但没有一个会使用其他列的头文件.
piR*_*red 12
使用
请记住,我假设是索引. pd.DataFrame.lookupCustomer_ID
df.lookup(df.index, df.Year_joined_mailing)
array([5, 7, 5, 7])
Run Code Online (Sandbox Code Playgroud)
df.assign(
Purchases_1st_year=df.lookup(df.index, df.Year_joined_mailing)
)
2015 2016 2017 Year_joined_mailing Purchases_1st_year
Customer_ID
ABC 5 6 10 2015 5
BCD 6 7 3 2016 7
DEF 10 4 5 2017 5
GHI 8 7 10 2016 7
Run Code Online (Sandbox Code Playgroud)
但是,您必须小心比较列名称中的可能字符串和第一年列中的整数...
确保类型比较的核选项得到尊重.
df.assign(
Purchases_1st_year=df.rename(columns=str).lookup(
df.index, df.Year_joined_mailing.astype(str)
)
)
2015 2016 2017 Year_joined_mailing Purchases_1st_year
Customer_ID
ABC 5 6 10 2015 5
BCD 6 7 3 2016 7
DEF 10 4 5 2017 5
GHI 8 7 10 2016 7
Run Code Online (Sandbox Code Playgroud)