【问题标题】:I want to replace the string with the first occurence in list我想用列表中第一次出现的字符串替换
【发布时间】:2019-08-02 22:30:43
【问题描述】:

我正在清理数据以进行建模,我想用列表中的第一个单词替换字符串中的多个单词。

谁能帮忙用 Python 代码解决这个问题?

数据:

id  String
1   a;b
2   b;e
3   c;d
4   a;f
5   a;c;h
6   b;c;d
7   e;c
8   f;a;c
9   h;e;c
10  b;a;d

列表:

b
c
f
h
e
d
a

输出:

id  Result
1   b
2   b
3   c
4   f
5   c
6   b
7   c
8   c
9   c
10  b

【问题讨论】:

  • 您的描述与您的示例输出不匹配。例如,为什么是 1 b 而不是 1 a?
  • 数据是否在 pandas 数据框中?你想要用 ; 分隔的第一个单词吗?分隔符,还是第一个字母?
  • 数据在 pandas 数据框中。我想用列表中的第一次出现替换字符串 a;b。例如,b 在列表中位于 a 之前,因此字符串 a;b 应替换为 b。
  • 请编辑问题以反映这一点。你应该提供你的问题的所有相关信息。我想说的是输入的类型非常相关......
  • 输入和参考列表之间是否也有保证匹配?也请澄清一下。

标签: python python-3.x pandas


【解决方案1】:

修改为应用于数据框。

import pandas as pd

df = pd.DataFrame({
    'id' : range(1,11),
    'String' :('a;b','b;e','c;d','a;f','a;c;h','b;c;d','e;c','f;a;c','h;e;c','b;a;d'),
})

someList = ['b','c','f','h','e','d','a']

def firstOccurance(x):
    for l in someList:
        if l in x:
            return l
            break

df['String'] = df['String'].apply(firstOccurance)

【讨论】:

  • 我会修改以反映您有一个数据框开始
  • 我会试试这个。感谢您的帮助。
猜你喜欢
  • 2016-07-24
  • 2011-06-05
  • 2011-08-25
  • 2016-11-02
  • 2018-10-30
  • 2022-10-07
  • 2017-10-25
相关资源
最近更新 更多