Pandas有条件地创建新的dataframe列

时间:2016-08-30 11:46:17

标签: python pandas if-statement dataframe multiple-columns

此问题是Pandas conditional creation of a series/dataframe column的扩展。 如果我们有这个数据帧:

    Col1       Col2
1    A          Z
2    B          Z           
3    B          X
4    C          Y
5    C          W

我们想做相同的事情:

if Col2 in ('Z','X') then Col3 = 'J' 
else if Col2 = 'Y' then Col3 = 'K'
else Col3 = {value of Col1}

我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

您可以将locisinfillna

一起使用
String[] array;

答案 1 :(得分:0)

尝试使用np.where:outcome = np.where(condition, true, false)

  df["Col3"] = np.where(df['Col2'].isin(['Z','X']), "J", np.where(df['Col2'].isin(['Y']), 'K', df['Col1']))

  Col1 Col2 Col3
1    A    Z    J
2    B    Z    J
3    B    X    J
4    C    Y    K
5    C    W    C

答案 2 :(得分:0)

当您有多个if条件时,一种简单(但可能效率低下)的方法可能会很有用。就像您尝试根据四分位数将值放入(例如)四个存储桶中一样。

df保存您的数据,col1具有值,col2应具有存储桶的值(1,2,3,4) 夸脱的边界为25%,50%和75%。 试试这个

  1. 创建一个虚拟列表作为dummy = []
  2. 使用以下命令遍历数据框:对于df.iterrows()中的索引行:
  3. 设置if条件,例如:if row [col1] <= quart [0]:#25%
  4. 在if下的dummy中添加适当的值:dummy.append(1)
  5. 嵌套的if-elif可以处理附加到虚拟对象的所有必需的可选值。
  6. 将虚拟对象添加为列:df [col2] =虚拟

您可以通过A = df.describe()找到四分位数,然后打印(A [col1])