根据多个条件将现有列的值分配给 Pandas 中的新列

用户1855463

我正在尝试基于现有列在 Pandas 数据框中创建一个新列。

第一列 列2 第3列 y1 y2 y3
100 200 300 2020年 2021年 2022年
100 200 300 2021年 2022年 2023
100 200 300 2019年 2020年 2021年

我想要一个新列vals如果 currentyear = y1 和 col2 如果 currentyear = y2 则col1 的

第一列 列2 第3列 y1 y2 y3 错误的
100 200 300 2020年 2021年 2022年 200
100 200 300 2021年 2022年 2023 100
100 200 300 2019年 2020年 2021年 300

我正在尝试以下代码:

    def assignvalues(df):
        if df['y1'] == currentyear:
            df['Vals'] = df['col1']
        elif df['y2'] == currentyear:
            df['Vals'] = df['col2']
        elif df['y3'] == currentyear:
            df['Vals'] = df['col3']
df.apply(assignvalues)

它确实创建列但不存储任何值。

特伦塔利

从您的DataFrame

>>> import pandas as pd
>>> from io import StringIO

>>> df = pd.read_csv(StringIO("""
... column1,column2,column3,y1,y2,y3
... 100,200,300,2020,2021,2022
... 100,200,300,2021,2022,2023
... 100,200,300,2019,2020,2021"""))
>>> df
    column1 column2 column3 y1      y2      y3
0   100     200     300     2020    2021    2022
1   100     200     300     2021    2022    2023
2   100     200     300     2019    2020    2021

以及函数assignvalues,它现在从每个 的预期列返回值if我们设置currentyearat2021例如:

>>> def assignvalues(df):
...     if df['y1'] == currentyear:
...         return df['column1']
...     elif df['y2'] == currentyear:
...         return df['column2']
...     elif df['y3'] == currentyear:
...         return df['column3']

>>> currentyear = 2021

我们可以像您一样分配给df["Vals"]一个参数以获得预期的结果:apply()axis=1

>>> df["Vals"] = df.apply(assignvalues, axis=1)
>>> df
    column1 column2 column3 y1      y2      y3      Vals
0   100     200     300     2020    2021    2022    200
1   100     200     300     2021    2022    2023    100
2   100     200     300     2019    2020    2021    300

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据Pandas中其他列的值将值分配给新列

将多个条件值分配给百分位数到新的pandas列中

将值分配给Pandas中的多个列

根据字符串条件将值分配给pandas数据框列

如何根据pandas中的组最大值将一列的标签分配给新的一列

有条件地将值分配给Pandas列

根据另一列中的变量将Pandas中的值分配给该列

Python:使用其他列将值分配给Pandas中的新列作为列表

无法将值分配给Pandas中的某些列

根据现有列中的值将值添加到Pandas中的新列中

Python / Pandas:基于多个列/行值将值分配给列

Python Pandas根据字典键将字典值分配给数据框列

根据列中的条件将值分配给组

Pandas DataFrame:如果满足多个条件,则将整数分配给新列

将值分配给具有多个条件的新列

熊猫-根据多个条件将值分配给空列

如何使用Pandas DataFrame中的函数添加多个列并分配给新的列名?

将列分配给pandas df

根据 if 和现有列在 pandas 中创建新列

Python Pandas 数据框根据清除字符串值并分配给新列的函数修改列值

R:根据满足条件的另一列的值将值分配给新列

将变量值分配给 Pandas DataFrame 中的新列

我可以将numpy数组分配给pandas 1.0.3中的新列吗

如果条件为真,则在 Pandas 中创建一个新列并从现有列中分配值

查找值并将值分配给Pandas中的列

根据现有行值在条件中在Pandas中创建新列并返回另一行的值

通过引用现有列中的字符串将值分配给data.table中的新列

如何将列表中的随机值分配给pandas数据框中的列?

将字典映射标签分配给pandas中列的索引值