熊猫.根据单元格值在数据帧中插入额外行的最佳方式是什么



我有这样的数据帧:

id 名称 电子邮件
1 a@e.com、b@e.com,c@e.com和d@e.com
2 f f@gmail.com

首先使用DataFrame.explode和由Series.str.split分割的值,然后比较@之前的值,如果没有匹配集缺失值和最后一次类似缺失值的排序在DataFrame的末尾,则将range分配给id列:

df = df.assign(emails = df['emails'].str.split(',')).explode('emails')
mask = df['name'].eq(df['emails'].str.split('@').str[0])
df['name'] = np.where(mask, df['name'], np.nan)
df = df.sort_values('name', key=lambda x: x.isna(), ignore_index=True)
df['id'] = range(1, len(df) + 1)
print (df)
id name       emails
0   1    a      a@e.com
1   2    f  f@gmail.com
2   3  NaN      b@e.com
3   4  NaN      c@e.com
4   5  NaN      d@e.com

相关内容

最新更新