【问题标题】:Split a column data using another column data in Pandas Dataframe使用 Pandas Dataframe 中的另一列数据拆分列数据
【发布时间】:2017-08-11 04:21:37
【问题描述】:

我有一列 A,它是我的数据框中另一列 B 的子集。我想用 A 拆分父列 B 中的数据,所以我在新列 C 中得到 B 的剩余部分。我正在使用 lambda 尝试下面的部分。但是内栏是 A,我提到的 Series 不能转换为 str。

df['C'] = df['B'].apply(lambda x: x.split(df['A'],1)[1])

示例 DF:

B                       A
Ford F-Series pickup    Ford
Toyota Camry            Toyoto
Ford Taurus/Taurus X    Ford

需要的输出数据列:

C
F-Series pickup
Camry
Taurus/Taurus X

这里 df['A'] 是一个系列,我们需要它作为每一行的数据来做同样的事情。是否有可能将 A 列数据作为字符串传递。任何帮助,将不胜感激。谢谢。

【问题讨论】:

  • 请添加 df 的示例和您想要的输出。
  • @Craig 道歉。添加了问题定义示例。
  • 不用担心,这个例子清楚地表明了你想要做什么。希望我的回答对您有所帮助。

标签: python python-2.7 python-3.x pandas


【解决方案1】:

我假设您不仅要删除模型名称,还要删除名称之前的所有内容。

下面的代码完成了你想要的:

import pandas as pd

df = pd.DataFrame( {'A':['Ford', 'Toyota', 'Ford'], 
                    'B':['Ford F-Series pickup', 'Toyota Camry', 'Ford Taurus/Taurus X']} )

df['C'] = df.apply(lambda x: x['B'].split(x['A'], 1), axis=1)['B']
print(df)

生产:

        A                     B                 C
0    Ford  Ford F-Series pickup   F-Series pickup
1  Toyota          Toyota Camry             Camry
2    Ford  Ford Taurus/Taurus X   Taurus/Taurus X

【讨论】:

  • 谢谢@Craig。您的解决方案是准确的。工作。再次感谢!!
【解决方案2】:

您可以使用.replace 方法。由于您将在将品牌名称替换为空内容后创建前导空格,因此.strip 方法将删除这些空格。

import pandas as pd
df = pd.DataFrame({'A': ["Ford", "Audi"], 'B': ["Ford Pickup", "Audi R8"]})

df['C'] = df.apply(lambda x: x['B'].replace(x['A'], '').strip(), axis=1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    • 2020-11-06
    相关资源
    最近更新 更多