Python - 将一列拆分为不同的列,即使不存在

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

您好,我正在使用 pandas,我需要将一列拆分为不同的列,问题是某些 csv 文件第一列中可能没有 4 封电子邮件。

示例

身份证 姓名 电子邮件
1 名字1 [email protected][email protected][email protected][email protected]
2 名字2 [email protected]
3 名字3

但是我正在运行以下代码

 df[['email1', 'email2','email3','email4']] = tenant.emails.str.split(',',1, expand=True)

告诉我这个错误


  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pandas/core/indexers/utils.py", line 401, in check_key_length
    raise ValueError("Columns must be same length as key")

我需要什么

身份证 姓名 电子邮件1 电子邮件2 电子邮件3. 电子邮件4
1 名字1 [email protected] [email protected] [email protected] [email protected]
2 名字2 [email protected]
3 名字3

有什么想法吗?问候

即使没有足够的值,我也需要将字符串分成多列。

python pandas split
1个回答
0
投票

带有单独的

Series.str.split
(扩展到多列)+
pd.concat
:

emails = df['EMAILS'].str.split(r',\s*', expand=True)
emails.columns = 'Email' + (emails.columns + 1).astype(str)
out_df = pd.concat([df[['ID', 'NAME']], emails], axis=1)

   ID     NAME            Email1          Email2       Email3         Email4
0   1  name 1      [email protected]  [email protected]  [email protected]  [email protected]
1   2  name 2   [email protected]            None         None           None
2   3  name 3                NaN             NaN          NaN            NaN
© www.soinside.com 2019 - 2024. All rights reserved.