【问题标题】:How to extract elements from lists in column using pandas?如何使用熊猫从列中的列表中提取元素?
【发布时间】:2020-12-21 23:24:54
【问题描述】:

我想提取电子邮件活动的类型、月份和年份。 campaign 列中的值是字符串。我应用了拆分方法,然后尝试使用映射函数将信息提取到不同的列。我不知道为什么 campaign_month 提取的映射失败。

emailClick_df['campaign_info'] = emailClick_df['campaign'].str.split('-')
emailClick_df['campaign_type'] = emailClick_df['campaign_info'].map(lambda x:x[0])
emailClick_df['campaign_month'] = emailClick_df['campaign_info'].map(lambda x:x[1])
emailClick_df['campaign_year'] = emailClick_df['campaign_info'].map(lambda x:x[2])

Error Message table

【问题讨论】:

标签: python pandas list mapping


【解决方案1】:

您可以使用expand参数进行拆分,然后一次性设置所有三列:

df[['campaign_type', 'campaign_month', 'campaign_year']] = \
    df['campaign'].str.split('-', expand=True)

df

输出:

              campaign campaign_type campaign_month campaign_year
0  Standard-Mar19-2020      Standard          Mar19          2020

附:您的错误表明很可能某些campaign_info 值不是type-month-year 的形式,因此未拆分为多个字符串的列表,因此尝试获取列表中的第二个值失败。否则,您的方法也应该没问题。您可以使用

找到那些有问题的记录
df[df['campaign'].str.split('-').str.len() != 3]

【讨论】:

  • 您好 Perl,感谢您的快速响应!我确实检查了一些campaign_info 值不是type-month-year 的形式。你的回答很有帮助!
猜你喜欢
  • 2018-02-09
  • 2021-01-01
  • 2022-12-20
  • 2021-10-22
  • 2021-01-14
  • 1970-01-01
  • 2015-09-10
  • 2022-10-15
  • 1970-01-01
相关资源
最近更新 更多