我一直在尝试尽可能优化包含两部分的数据操作。我正在处理 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']}
)
感谢您的时间和帮助