当前位置: 首页 > 知识库问答 >
问题:

基于其他列中的值在Python3(熊猫)数据帧中创建新列

子车凌龙
2023-03-14

我有一个pandas dataframe,需要根据dataframe中其他列的值创建新列。这是数据

人城市国家国家

美国伊利诺伊州芝加哥

美国亚利桑那州凤凰城B酒店

C美国加利福尼亚州圣地亚哥

我想根据state中的值创建两个新列

  1. 创建新列df[“城北”]=df[“城市”]其中state=“伊利诺伊”
  2. 创建新列df[“城市南部”]=df[“城市”],其中州不等于“伊利诺伊州”

我试过了

df.loc[((df['state'] == 'Illinois')), 'city-north'] = df['city']

df.loc[((df['state'] != 'Illinois')), 'city-south'] = df['city']

但是不等于条件的第二行代码没有创建“城市南方”列。请帮帮忙

共有2个答案

程皓轩
2023-03-14

我认为你的代码应该可以正常工作。

df.loc[df['state'] == 'Illinois', 'city-north'] = df['city']

df。loc[df['state']!='Illinois','city south']=df['city']

我甚至尝试了多种条件和新的输入,这些输入不在原始数据框中,并且仍然工作如下:

df.loc[(df['州'] == '伊利诺伊州')

df。loc[(df[‘州’!=‘伊利诺伊州’)

请注意,我的回答的第二部分是在多个条件下显示更清晰的内容,并且仍然有效。它可用于添加具有新条目的新列。

禄源
2023-03-14

对于我工作良好,如果没有匹配条件被创建缺失值:

df.loc[df['state'] == 'Illinois', 'city-north'] = df['city']
df.loc[df['state'] != 'Illinois', 'city-south'] = df['city']

print (df)
  person       city       state country city-north city-south
0      A    Chicago    Illinois     USA    Chicago        NaN
1      B    Phoenix     Arizona     USA        NaN    Phoenix
2      C  San Diego  California     USA        NaN  San Diego

如果不匹配的行需要空值字符串:

df['city-north'] = np.where(df['state'] == 'Illinois', df['city'], '')
df['city-south'] = np.where(df['state'] != 'Illinois', df['city'], '')

print (df)
  person       city       state country city-north city-south
0      A    Chicago    Illinois     USA    Chicago           
1      B    Phoenix     Arizona     USA               Phoenix
2      C  San Diego  California     USA             San Diego
 类似资料:
  • 我有两个熊猫数据框 步骤2:对于flag=1的行,AA_new将计算为var1(来自df2)*组“A”和val“AA”的df1的'cal1'值*组“A”和val“AA”的df1的'cal2'值,类似地,AB_new将计算为var1(来自df2)*组“A”和val“AB”的df1的'cal1'值*组“A”和val“AB”的df1的'cal2'值 我的预期输出如下所示: 以下基于其他stackflow

  • 我有以下数据帧: 我需要删除等于的行。最有效的方法是什么?

  • 问题内容: 所以,这是我的数据框 我还有另一个清单: 如果x.Country位于欧洲,我想创建一个新列“ Continent” 问题答案: 或者您可以直接 使用

  • 我想在Pandas数据集中创建一个新列,基于另外两个列的值。 现在,应该如下所示: 有什么帮助吗?

  • 基于dataframe列val_1值,查看其他列col_0-10标签前缀,然后创建另一列Mycl。 数据帧看起来像: 应用逻辑后所需的数据帧: 我是trid,但这不起作用:df['mycol']=df['col'df['val_1']。aType(str)] DDL生成DataFrame: 谢谢!

  • 我有一个事件日志数据框,每行是一个事件(如查看项目),其中包含列,,以及用户分配项目的。我想创建一个表示所有用户-项目交互的数据框:表示为二维矩阵,每个(i,j)表示用户i和项目j的分数(下图截图)。如果用户尚未看到该产品,则分配NaN。 我试过用循环做这件事,但正如预期的那样,运行时间太长: 有没有更快的方法? 根据评论中的要求,我的数据帧的头部<代码>事件类型与上述分数类似。