python - 有没有办法在 Pandas 中分类数据?

标签 python pandas

我有一个数据框,其中一列是美国各州。我想创建一个新列并根据区域对州进行分箱,即南部、西南等。看起来 pd.cut 仅用于连续变量,因此以这种方式分箱似乎不是一种选择。有没有一种好方法可以创建一个以另一列中的分类数据为条件的列?

最佳答案

import pandas as pd

def label_states (row):
    if row['state'] in ['Maine', 'New Hampshire', 'Vermont', 'Massachusetts', 'Rhode Island', 'Connecticut', 'New York', 'Pennsylvania', 'New Jersey']:
        return 'north-east'
    if row['state'] in ['Wisconsin', 'Michigan', 'Illinois', 'Indiana', 'Ohio', 'North Dakota', 'South Dakota', 'Nebraska', 'Kansas', 'Minnesota', 'Iowa', 'Missouri']:
        return 'midwest'
    if row['state'] in ['Delaware', 'Maryland', 'District of Columbia', 'Virginia', 'West Virginia', 'North Carolina', 'South Carolina', 'Georgia', 'Florida', 'Kentucky', 'Tennessee', 'Mississippi', 'Alabama', 'Oklahoma', 'Texas', 'Arkansas', 'Louisiana']:
        return 'south'
    return 'etc'

df = pd.DataFrame([{'state':"Illinois", 'data':"aaa"}, {'state':"Rhode Island",'data':"aba"}, {'state':"Georgia",'data':"aba"}, {'state':"Iowa",'data':"aba"}, {'state':"Connecticut",'data':"bbb"}, {'state':"Ohio",'data':"bbb"}])

df['label'] = df.apply(lambda row: label_states(row), axis=1)

df

The output:

关于python - 有没有办法在 Pandas 中分类数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59004206/

相关文章:

python - 如何使用 python 3 turtle 两次

python - pandas OLS 中 R^2 调整值不一致

python - 需要拆分并检查列表元素在 pandas df 中是否可用

Python - 在没有 .replace() 的情况下替换多个字符

python - 迁移中的 django cms 错误 - 发现错误的约束数 (0)

即使将 Python 模块包含在 PATH 变量中,它也无法工作(无法导入)

python - 如何对与 block 设备交互的程序进行单元测试

python - 转换 Pandas 列的数据类型

python - 如何逐行计算两列 Pandas 中的 pct_change()?

python - 使用正则表达式仅将文本从列中的字符串提取到 python 数据框中的另一列时出错