【问题标题】:Python Pandas - add comment for respective filtered cellPython Pandas - 为相应过滤的单元格添加注释
【发布时间】:2019-07-12 03:23:06
【问题描述】:

我在excel 中有数据,如下所示。

我是 python pandas 的新手,我知道如何在列中导入 excel 和过滤 >,但我想知道如何在 [City] 列上执行 contains,例如( “包含 = TN”)。

如果它是“TN”,则创建一个新列并在相应的单元格中创建一个[Note](如下面的注释列)。

并过滤年龄,如果[Age] > 30 然后在[Note] 列上添加注释。

请有人帮忙解决这个问题....

[Name]      【Age】        【City】             【Note】

Chandru,.     29,           chennai TN,         Contain TN

John,         43,           Mumbai MH,          age >30

George,       35,           Madurai TN,         Contain TN | age >30

Karthik.,     25,           Kolkata WB

【问题讨论】:

  • 我不确定我是否得到了这个。您想在 Pandas 中导入 Excel 电子表格并根据城市和年龄的值创建另一列?
  • 您可以将excel文件作为数据框读入pandas,然后使用df.apply(get_notes,axis=1)get_notes是一个函数,您可以在其中编写条件并返回合适的字符串

标签: pandas filter contains


【解决方案1】:

考虑到您的 excel 电子表格名为 my_file.xlsx,以下代码使用 Pandas 和 Numpy 在数据集中创建 Note 列:

import pandas as pd
import numpy as np
df = pd.read_excel('my_file.xlsx')
df['Note'] = np.where((df.Age > 30) & df.City.str.contains('TN'), 'Contain TN | age >30',
             np.where((df.Age > 30) & ~df.City.str.contains('TN'), 'age >30',
             np.where(~(df.Age > 30) & df.City.str.contains('TN'), 'Contain TN', '')))

这会产生以下数据框:

如果您想了解更多关于 np.where() 方法的信息,包含示例的官方文档的链接是: https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html

【讨论】:

  • 这个答案是否正确解决了您的问题?如果是这样,您介意选择并投票吗?
  • 非常感谢您的支持,当我对不同的列使用以下查询时出现以下错误 - df['Note'] = df.Email.str.contains('@@'), '电子邮件包含@@',''(ValueError:值的长度与索引的长度不匹配)
  • 结构不同,不太容易理解是怎么回事。如果数据是其他格式,您应该编辑您的问题。
  • 我在 Excel 表中有一个电子邮件列。在email栏上,有些email包含'@@"。所以我想找到那些记录并在note栏上标记。
  • 你可以使用类似:df['Note'] = np.where(df.Email.str.contains('@@').fillna(False), 'Email contains @@' , '' )。但它只会评论这个特定的条件。
猜你喜欢
  • 1970-01-01
  • 2019-03-24
  • 2020-09-07
  • 1970-01-01
  • 2018-01-17
  • 2018-04-25
  • 2014-03-27
  • 2022-06-28
  • 1970-01-01
相关资源
最近更新 更多