【问题标题】:Pandas way of splitting a string with multiple delimitersPandas用多个分隔符分割字符串的方法
【发布时间】:2018-06-24 18:06:02
【问题描述】:

我正在使用一个数据框,我希望在其中更改国家/地区列中的条目,例如:

'Bolivia (Plurinational State of)' 应该是 'Bolivia',

'Switzerland17' 应该是'Switzerland'

我定义了以下函数:

def process(w):
    for i in range(len(w)):
        if w[i] in ['(', ')', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '&', '/']:
            w = w[0:i]
            w = ''.join(w).replace(" ", "")
            break

    return w

然后我使用 python apply 函数将其应用于数据框。

energy['Country'] = energy['Country'].apply(process)

虽然我已经能够实现所需的输出,但这并不完全正确。一些条目,如

大不列颠及北爱尔兰联合王国美利坚合众国20已更改为 大不列颠及北爱尔兰联合王国美国

我做错了什么?还有什么是更有效、更简洁的代码来实现结果?

【问题讨论】:

  • 您想从国家名称或其他内容中删除整数部分吗?
  • @Shubham Gupta,荣誉代码learner.coursera.help/hc/en-us/articles/… 声明Your answers to homework, quizzes, and exams must be your own work
  • 这些链接stackoverflow.com/questions/41719259/…stackoverflow.com/questions/20894525/… 将帮助您分道扬镳。可以和他们一起工作。
  • a=''.join([i for i in a if i.isalpha()]) 使用此语句来执行此操作。
  • @Dark,我当然会提交我自己的作品。我只是想知道是否有人可以为我指出一个比我明显原始的解决方案更好的解决方案。不过谢谢你的链接!

标签: python python-3.x pandas dataframe


【解决方案1】:

我可能遗漏了一些东西,但看起来像

replace(" ", "")

将删除空格,这正是 UnitedStatesofAmerica 正在发生的事情

【讨论】:

  • pd.replace 也有一个 regex=False(默认)标志,您可以使用它直接替换值而不是循环遍历这些值。
  • 谢谢!情况正是如此。不过,另一个问题是,美属萨摩亚并没有作为美属萨摩亚(以及许多类似的)归还,而是美利坚合众国。我在这里缺少什么吗?
  • 我的猜测是,如果美属萨摩亚没有字符数 then ,它就不会触发 If 语句,所以它永远不会进入那个循环。如果您觉得我的回答有用,请点击我的回答旁边的向上三角形。它会给我积分。
猜你喜欢
  • 2020-04-23
  • 1970-01-01
  • 2012-05-12
  • 2021-09-25
  • 1970-01-01
  • 2013-05-03
  • 2022-11-10
相关资源
最近更新 更多