【问题标题】:Python Pandas error: pandas can only use .str accessor with string valuesPython Pandas 错误:pandas 只能使用带有字符串值的 .str 访问器
【发布时间】:2017-06-01 05:35:21
【问题描述】:

我有一个 pandas 脚本,我在其中获取了一个 excel 表并将其放在 pandas 数据框中,然后我在此数据框中查找特定单词,然后创建 df 的 1 和 0 的掩码,我在其中找到这个词。

我没有特定格式的 Excel 工作表,所以我按原样获取所有信息,然后查找单词并使用此行创建一个掩码,这会产生错误:

mask = np.column_stack([df[col].str.find(word) for col in df.columns.tolist()]).astype(int)

这一行有时会产生这个错误:

pandas 只能使用带有字符串值的 .str 访问器,它使用 熊猫中的 np.object_ dtype

知道为什么以及如何使它起作用吗?

谢谢

【问题讨论】:

  • 在您的列表理解中尝试使用df.select_dtypes([np.object]).columns.tolist() 而不是df.columns.tolist()。现在,您正在选择所有dtypes 的列,这些列很可能是混合的。您需要将其限制为仅字符串,str.find() 函数才能正常工作。

标签: python excel pandas dataframe


【解决方案1】:

您可以使用 applymaplambda 函数将数据帧转换为掩码。 如果df 是您的输入数据框,您可以执行以下操作将所有字段转换为1(如果其中包含字符串word,否则为0

mask = df.applymap(lambda x: 1 if word in str(x) else 0)

【讨论】:

    猜你喜欢
    • 2018-12-22
    • 2016-02-15
    • 1970-01-01
    • 2020-03-27
    • 2018-08-04
    • 2021-03-18
    • 1970-01-01
    • 2019-05-25
    • 2020-11-23
    相关资源
    最近更新 更多