当前位置: 首页 > 面试题库 >

Pandas条件创建series/dataframe列

阳德润
2023-03-14
问题内容

我有下面的数据框:

    Type       Set
1    A          Z
2    B          Z           
3    B          X
4    C          Y

我想向数据框添加另一列(或生成一系列),该列与数据框的长度相同(= equal number of records/rows),如果Set =’Z’则将颜色设置为green ,如果Set = 'Z' and 'red' if Set = otherwise.

最好的方法是什么?


问题答案:

如果你只有两种选择:

df['color'] = np.where(df['Set']=='Z', 'green', 'red')

例如,

import pandas as pd
import numpy as np

df = pd.DataFrame({'Type':list('ABBC'), 'Set':list('ZZXY')})
df['color'] = np.where(df['Set']=='Z', 'green', 'red')
print(df)

输出

  Set Type  color
0   Z    A  green
1   Z    B  green
2   X    B    red
3   Y    C    red

如果你有两个以上的条件,请使用np.select。例如,如果你想color成为

  • yellow when (df['Set'] == 'Z') & (df['Type'] == 'A')
  • otherwise blue when (df['Set'] == 'Z') & (df['Type'] == 'B')
  • otherwise purple when (df['Type'] == 'B')
  • otherwise black,

然后使用

df = pd.DataFrame({'Type':list('ABBC'), 'Set':list('ZZXY')})
conditions = [
    (df['Set'] == 'Z') & (df['Type'] == 'A'),
    (df['Set'] == 'Z') & (df['Type'] == 'B'),
    (df['Type'] == 'B')]
choices = ['yellow', 'blue', 'purple']
df['color'] = np.select(conditions, choices, default='black')
print(df)

输出:

  Set Type   color
0   Z    A  yellow
1   Z    B    blue
2   X    B  purple
3   Y    C   black


 类似资料:
  • 做这件事最好的方法是什么?

  • 问题内容: 我有一个熊猫系列科幻小说: 我想将其转换为以下DataFrame: 我找到了一种方法,但是我怀疑这是更有效的方法: 问题答案: 无需创建2个临时df,您可以使用DataFrame构造函数将它们作为参数传递给dict中: 有很多方法可以构建df,请参阅文档

  • 我试图从一个简单的熊猫数据流创建一个火花数据流。这是我遵循的步骤。 在这之前一切都好。输出为: Spark UI 版本:V2.4.0 主人:本地[*]

  • 问题内容: 我创建了一个元组生成器,该元组生成器从仅过滤感兴趣记录的文件中提取信息,并将其转换为生成器返回的元组。 我尝试从创建数据框: 但是抛出一个错误: 我设法让它使用列表中的生成器,但是使用了两次内存: 我要加载的文件很大,内存消耗很重要。我的计算机的最后一次尝试花了两个小时来尝试增加虚拟内存:( 问题: 有人知道直接从记录生成器创建DataFrame的方法,而无需事先将其转换为列表吗? 注

  • 问题内容: 我从这样的输入数据开始 打印时显示为: 分组非常简单: 打印产生一个对象: 但是我最终想要的是另一个DataFrame对象,该对象包含GroupBy对象中的所有行。换句话说,我想得到以下结果: 我在pandas文档中看不到如何完成此操作。任何提示都将受到欢迎。 问题答案: 这是一个。但是,它具有层次结构索引: 也许你想要这样的东西? 或类似的东西: