在pandas数据框中创建一列

香努

我有一个数据框如下:

df = pd.DataFrame({'ORDER':["A", "A", "A", "B", "B","B"], 'GROUP': ["A1C", "A1", "B1", "B1C", "M1", "M1C"]})
df['_A1_XYZ'] = 1
df['_A1C_XYZ'] = 2
df['_B1_XYZ'] = 3
df['_B1C_XYZ'] = 4
df['_M1_XYZ'] = 5
df

    ORDER   GROUP   _A1_XYZ   _A1C_XYZ   _B1_XYZ      _B1C_XYZ  _M1_XYZ
0   A       A1C      1          2             3       4          5     
1   A       A1       1          2             3       4          5     
2   A       B1       1          2             3       4          5     
3   B       B1C      1          2             3       4          5     
4   B       M1       1          2             3       4          5     
5   B       M1C      1          2             3       4          5     

我想基于列“ GROUP”和所有以XYZ结尾的列创建列“ NEW” ,如下所示:基于每行df [“ NEW”] = df [“ _XYZ”]的GROUP值

例如,对于第一行,GROUP = A1C,因此“ NEW” = 2(_A1C_XYZ),对于第二行“ NEW” = 1(_A1_XYZ)

我的预期输出

    ORDER   GROUP   _A1_XYZ   _A1C_XYZ   _B1_XYZ      _B1C_XYZ  _M1_XYZ      NEW
0   A       A1C      1          2             3       4          5           2
1   A       A1       1          2             3       4          5           1
2   A       B1       1          2             3       4          5           3
3   B       B1C      1          2             3       4          5           4
4   B       M1       1          2             3       4          5           5
5   B       M1C      1          2             3       4          5           
斯科特·波士顿

用途pd.DataFrame.lookup

df['NEW'] = df.lookup(df.index, '_'+df['GROUP']+'_XYZ')
df

输出:

  ORDER GROUP  _A1_XYZ  _A1C_XYZ  _B1_XYZ  _B1C_XYZ  _M1_XYZ  _M1C_XYZ  NEW
0     A   A1C        1         2        3         4        5         6    2
1     A    A1        1         2        3         4        5         6    1
2     A    B1        1         2        3         4        5         6    3
3     B   B1C        1         2        3         4        5         6    4
4     B    M1        1         2        3         4        5         6    5
5     B   M1C        1         2        3         4        5         6    6

问题编辑后更新。

或使用堆栈并重新编制索引,

(df['New'] = df.stack().reindex(zip(df.index, '_'+dfl['GROUP']+'_XYZ'))
               .rename('NEW').reset_index(level=1, drop=True))

df

输出:

  ORDER GROUP  _A1_XYZ  _A1C_XYZ  _B1_XYZ  _B1C_XYZ  _M1_XYZ  New
0     A   A1C        1         2        3         4        5    2
1     A    A1        1         2        3         4        5    1
2     A    B1        1         2        3         4        5    3
3     B   B1C        1         2        3         4        5    4
4     B    M1        1         2        3         4        5    5
5     B   M1C        1         2        3         4        5  NaN

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在pandas数据框中创建一列计数

HoloViews:为pandas数据框中的每一列创建框线图

根据第一列中的模式更改在pandas数据框中创建新列

从另一列创建一列列表,并在 Pandas 数据框中仅显示唯一值

在pandas数据框中创建新列,作为另一列的函数

如何使用前一列的两列中的键来创建新的pandas数据框?

使用针对另一列的 if 语句在 Pandas 数据框中创建新列

在pandas数据框中旋转一列并创建4个新列

如何使用两行中的值在 Pandas 数据框中创建一列?

Plotly:如何从 Pandas 数据框中的每一列创建子图?

在pandas数据框中创建一列,该列计算两行之间的差异

Python Pandas:使用三个不同的值在数据框中创建一列

在 Pandas 数据框中的一列中查找月末

根据条件在熊猫数据框中创建一列

在熊猫数据框中创建一列

为数据框中的一列创建列表列

在pandas数据框中舍入一列

在Pandas数据框中插入一列

Python:在Pandas数据框中添加一列

从 Pandas 数据框中按点分割一列

在pandas数据框中添加一列的总计

在pandas数据框中添加一列以NA填充

绘制数据框中的一列作为 Pandas 中另一列的函数

使用列表在PySpark数据框中创建一列,该列表的索引位于数据框的一列中

检查一列是否包含来自pandas数据框中另一列的单词

Pandas pct_change 仅在数据框中的一列上创建新列

通过在 Pandas 的另一列中拆分字符串来创建新的数据框列

我想使用数据框中的dict值在数据框中创建一列

在Pandas中,如何从一列中用逗号分隔的项目数中创建数据框?