[英]Create df column based on other columns in df
通过与两列上的 num 匹配,创建基于 num_type_len 的 len 列。
num_type_len | 实际_num |
---|---|
[8812_CHECKING_90、7094_SAVINGS_75、9939_CHECKING_89] | 7094 |
[6846_CHECKING_87, 1906_CHECKING_90] | 1906年 |
预计 output:-
| Report_length | Actual_num |
| ------------- | ---------- |
| 75 | 7094 |
| 90 | 1906 |
您可以比较按Actual_num
转换为字符串的列表的拆分值,并使用iter
技巧按next
获取第一个匹配值:
df['Report_length'] = [next(iter([z.split('_')[-1]
for z in x if z.split('_')[0] == str(y)]), None)
for x, y in zip(df['num_type_len'], df['Actual_num'])]
df = df[['Report_length','Actual_num']]
print (df)
Report_length Actual_num
0 75 7094
1 90 1906
或者将DataFrame.explode
与列表列一起使用,并比较拆分值:
df1 = df.explode('num_type_len')
df2 = (df1['num_type_len'].str.split('_', expand=True)
.rename(columns={2:'Report_length'})
.assign(Actual_num = df1['Actual_num']))
df = df2.loc[df2[0].eq(df2['Actual_num'].astype(str)), ['Report_length', 'Actual_num']]
print (df)
Report_length Actual_num
0 75 7094
1 90 1906
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.