如何根据现有列pandas中的多个条件创建新列

2024-05-01 09:14:32 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个9位数的df列。没有重复项,每个ID以1-6之间的不同数字开头——这取决于每个ID以数字开头,我想创建一个单独的列,其中包含ID的第一个数字表示的“name”。(例如,以1开头的ID表示缅因州,以2开头的ID表示加利福尼亚州。。。等等)

如果只有两个条件的话,这是可行的:

df['id_label'] = ['name_1' if name.startswith('1') else 'everything_else' for name in df['col_1']]

我不知道如何创建对所需内容的多行理解,所以我认为这是可行的,但它只创建循环最后一次迭代的id_label列(即id_label列只包含'name_5):

for col in df['col_1']:
    if col.startswith('1'):
        df['id_label'] = 'name_1'
    if col.startswith('2'):
        df['id_label'] = 'name_2'
    if col.startswith('3'):
       df['id_label'] = 'name_3'
    if col.startswith('4'):
        df['id_label'] = 'name_4'
    if col.startswith('5'):
        df['id_label'] = 'name_5'
    if col.startswith('6'):
        df['id_label'] = 'name_5'

我的问题是如何从基于多个条件语句的旧列创建新列?


Tags: nameiniddfforif数字col