【问题标题】:How to extract first word from DataFrame如何从DataFrame中提取第一个单词
【发布时间】:2021-03-02 09:05:30
【问题描述】:

背景

我创建了以下数据框,结合了来自 Kaggle 的两个数据集。

Titanic: Machine Learning from Disaster (输入/泰坦尼克号/train.csv)

titanic-nationalities

数据帧名称:输出

    PassengerId Nationality Name
0   1   CelticEnglish   Braund, Mr. Owen Harris
1   2   CelticEnglish   Cumings, Mrs. John Bradley (Florence Briggs Th...
2   3   Nordic,Scandinavian,Sweden  Heikkinen, Miss. Laina
3   4   CelticEnglish   Futrelle, Mrs. Jacques Heath (Lily May Peel
....

我希望改变什么

    PassengerId Nationality Name
0   1   CelticEnglish   Braund
1   2   CelticEnglish   Cumings
2   3   Nordic  Heikkinen
3   4   CelticEnglish   Futrelle
....

问题

我尝试执行以下代码,但我不知道如何修复以下代码。

错误

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
----> 1 output['Nationality'].split('\n', 1)[0]
      2 output['Name'].split('\n', 1)[0]

/opt/conda/lib/python3.7/site-packages/pandas/core/generic.py in __getattr__(self, name)
   5137             if self._info_axis._can_hold_identifiers_and_holds_name(name):
   5138                 return self[name]
-> 5139             return object.__getattribute__(self, name)
   5140 
   5141     def __setattr__(self, name: str, value) -> None:

AttributeError: 'Series' object has no attribute 'split'

代码

output['Nationality'].split('\n', 1)[0]
output['Name'].split('\n', 1)[0]

我想做什么

我试图改变类型转换,但结果没有改变。

output['Nationality'] = output['Nationality'].astype(str)
output['Name'] = output['Name'].astype(str)

output['Nationality'] = output['Nationality'].str.split('\n', expand=True)[0]
output['Name'] = output['Name'].str.split('\n', expand=True)[0]
output
PassengerId Nationality Name
0   1   CelticEnglish   Braund, Mr. Owen Harris
1   2   CelticEnglish   Cumings, Mrs. John Bradley (Florence Briggs Th...
2   3   Nordic,Scandinavian,Sweden  Heikkinen, Miss. Laina
3   4   CelticEnglish   Futrelle, Mrs. Jacques Heath (Lily May Peel)

环境

Kaggle 笔记本

【问题讨论】:

    标签: python python-3.x string dataset kaggle


    【解决方案1】:

    Series 对象没有拆分方法。您正在尝试拆分字符串,因此您需要先将列数据类型转换为字符串(或将列扩展为多列),然后再应用拆分。

    df.dtypes检查列的数据类型

    output['Nationality'].astype(str)分配数据类型

    编辑:dtype 调用没有括号

    【讨论】:

    • 我试图检查数据类型,但它返回了'DataFrame' object has no attribute 'dtype'
    • 对不起,没有括号,然后添加一个's'pandas.pydata.org/pandas-docs/stable/reference/api/…
    • 感谢您的回答,但它不像上面添加的关于我的问题的部分那样起作用。
    • 输出数据帧的数据类型是什么?
    【解决方案2】:

    试试.str.split()

    output['Nationality'] = output['Nationality'].str.split('\n', expand=True)[0]
    output['Name'] = output['Name'].str.split('\n', expand=True)[0]
    

    【讨论】:

    • 感谢您的回答,但它不像上面添加的关于我的问题的部分那样起作用。
    猜你喜欢
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多