如何根据其他两列中的条件创建和填充新列?

芽狐狸

如何创建一个新列并根据其他两列的条件用值填充它?

输入:

    import pandas as pd
    import numpy as np

    list1 = ['no','no','yes','yes','no','no','no','yes','no','yes','yes','no','no','no']
    list2 = ['no','no','no','no','no','yes','yes','no','no','no','no','no','yes','no']

    df = pd.DataFrame({'A' : list1, 'B' : list2}, columns = ['A', 'B'])

    df['C'] = np.where ((df['A'] == 'yes') & (df['A'].shift(1) == 'no'), 'X', np.nan)
    df['D'] = 'nan','nan','X','X','X','X','nan','X','X','X','X','X','X','nan'

    print (df)

输出:

          A    B    C    D
    0    no   no  nan  nan
    1    no   no  nan  nan
    2   yes   no    X    X
    3   yes   no  nan    X
    4    no   no  nan    X
    5    no  yes  nan    X
    6    no  yes  nan  nan
    7   yes   no    X    X
    8    no   no  nan    X
    9   yes   no    X    X
    10  yes   no  nan    X
    11   no   no  nan    X
    12   no  yes  nan    X
    13   no   no  nan  nan

将给出 A 列和 B 列,并且仅包含“是”或“否”值。只能有三个可能的对('no'-'no'、'yes'-'no' 或 'no'-'yes')。永远不会有“是”-“是”对。

目标是在遇到“是”-“否”对时在新列中放置一个“X”,然后继续填写“X”,直到出现“否”-“是”对。这可能发生在几行或几百行上。

D 列显示了所需的输出。

C 列是当前失败的尝试。

任何人都可以帮忙吗?提前致谢。

965311532

尝试这个:

df["E"] = np.nan

# Use boolean indexing to set no-yes to placeholder value
df.loc[(df["A"] == "no") & (df["B"] == "yes"), "E"] = "PL"

# Shift placeholder down by one, as it seems from your example
# that you want X to be on the no-yes "stopping" row
df["E"] = df.E.shift(1)

# Then set the X value on the yes-no rows
df.loc[(df.A == "yes") & (df.B == "no"), "E"] = "X"
df["E"] = df.E.ffill() # Fill forward

# Fix placeholders
df.loc[df.E == "PL", "E"] = np.nan

结果:

    A   B   C   D   E
0   no  no  nan nan NaN
1   no  no  nan nan NaN
2   yes no  X   X   X
3   yes no  nan X   X
4   no  no  nan X   X
5   no  yes nan X   X
6   no  yes nan nan NaN
7   yes no  X   X   X
8   no  no  nan X   X
9   yes no  X   X   X
10  yes no  nan X   X
11  no  no  nan X   X
12  no  yes nan X   X
13  no  no  nan nan NaN

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫根据其他列创建和填充新列

根据其他两列中的条件在R中创建一个新列

根据其他列的条件在熊猫中创建新列

根据其他列中的条件创建新列

Python:根据其他两列中的值有条件地创建新列

根据其他两个数据框列中的值条件创建新列

根据其他条件创建新列

如何根据其他两列中的 IF AND 使用设定值创建新列

如何根据其他两列的值在 DataFrame 中创建新列

如何根据其他列的条件在数据框中创建新列?

如何根据R中其他列的多个条件创建多个新列?

根据其他列值创建新列-有条件向前填充?

在 R 中,如何根据其他列的值从其他列的列标题创建新列

如何根据其他两列的值在 R 中创建新变量?

熊猫根据其他两列的划分创建新列

SQL根据其他两列创建新列

根据多个其他列的条件创建新的 pandas 列

根据其他列的条件创建新列

Python-根据其他列的条件创建新列

根据其他列的条件创建新列

在数据框R中动态创建列,并根据其他列条件进行填充

根据其他列中的某些条件自动填充列

从另一列填充R中的新列,并以其他两列为条件

如何根据 julia 中的其他列值有条件地在数据框中创建新列

根据R中其他列中的多个条件创建新列

根据其他两个条件创建一个新列

根据 R 中其他两列的几个条件向数据框添加新列

根据熊猫中其他两列的条件使用创建列

根据熊猫中其他两个列的匹配值创建新列