繁体   English   中英

根据 df 中的其他列创建 df 列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM