尝试根据列表值和长度动态填充列

问题描述 投票:0回答:0

我一直在尝试尽可能优化包含两部分的数据操作。我正在处理 pandas 列,其中每个值都是具有不同长度或 NaN 值的列表,我想提取值以根据它们在列表中的位置将它们放在列上。

这是一个可重现的示例以及我迄今为止编写的代码:

df = pd.DataFrame({'first_name': ['Charles', 'Charles2', 'Charles3'],
               'last_name': ['George', 'George2', 'George3'],
               'banking_number': [['NaN'], ['UK421'], ['UK123', 'FR789']]}
             )
len_banking_number = max(
    df.loc[
        df[
            'banking_number'
        ].notna()
    ]['banking_number'].str.len()
)
len_list = list(
    range(
        1, len_banking_number + 1
    )
)

for i in len_list:
  df[f'bank_{i}'] = np.nan

你如何得到这个结果?

    df_final = pd.DataFrame({'first_name': ['Charles', 'Charles2', 'Charles3'],
                   'last_name': ['George', 'George2', 'George3'],
                   'banking_number': [['NaN'], ['UK421'], ['UK123', 'FR789']],
                   'bank_1': ['NaN', 'UK', 'UK'],
                   'bank_2': ['NaN', 'NaN', 'FR']}
                 )

感谢您的时间和帮助

python pandas dataframe data-manipulation
© www.soinside.com 2019 - 2024. All rights reserved.