【问题标题】:Categorizing a data based on string in each row根据每行中的字符串对数据进行分类
【发布时间】:2019-10-16 05:34:29
【问题描述】:

我有以下数据框:

 raw_data = {'name': ['Willard', 'Nan', 'Omar', 'Spencer'],
'Last_Name': ['Smith', 'Nan', 'Sheng', 'Poursafar'],
'favorite_color': ['blue', 'red', 'Nan', "green"],
'Statues': ['Match', 'Mis-Match', 'Match', 'Mis_match']}
df = pd.DataFrame(raw_data, columns = ['name', 'age', 'favorite_color', 'grade'])
df

我想做以下任务:

  1. 分隔包含匹配和不匹配的行
  2. 创建一个仅包含名字和姓氏都是 Nan 并且喜欢某种颜色(除了 nan 之外的任何颜色)的人的类别。

你们能帮帮我吗?

【问题讨论】:

    标签: python-3.x string pandas dataframe


    【解决方案1】:

    使用boolean indexing:

    df1 = df[df['Statues'] == 'Match']
    df2 = df[df['Statues'] =='Mis-Match']
    

    如果缺失值不是字符串,请使用 Series.isnaSeries.notna:

    df3 = df[df['Name'].isna() & df['Last_NameName'].isna() & df['favorite_color'].notna()]
    

    如果Nans 是字符串比较Nan

    df3 = df[(df['Name'] == 'Nan') & 
             (df['Last_NameName'] == 'Nan') &
             (df['favorite_color'] != 'Nan')]
    

    【讨论】:

    • 有什么理由使用 df['col'].notna()!df['col'].isna() 吗? +1
    • @TimBiegeleisen - 这不是有效代码,需要~df['col'].isna(),但更简单的是df['favorite_color'].notna()
    • @Sam - 不,只有斯洛伐克的普通人;)
    猜你喜欢
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    相关资源
    最近更新 更多