熊猫:根据if-else语句并使用其他数据框中的值在数据框中创建列

时间:2020-09-14 14:23:16

标签: python pandas

我有两个数据框A和B,如下所示:

A:

+----+-------+--------+-----+
| ID | Round | Column | row |
+----+-------+--------+-----+
|  1 | A     |      1 |   1 |
|  1 | A     |      2 |   1 |
|  1 | A     |      3 |   1 |
|  1 | A     |      4 |   1 |
|  1 | A     |      5 |   1 |
|  1 | A     |      6 |   1 |
|  1 | A     |      1 |   2 |
|  1 | A     |      2 |   2 |
|  1 | A     |      3 |   2 |
|  1 | A     |      4 |   2 |
|  1 | A     |      5 |   2 |
|  1 | A     |      6 |   2 |
+----+-------+--------+-----+


B:
+-----+-----------------------------+
| ID  |         Categories          |
+-----+-----------------------------+
|   1 | [a,b,c,d,e,f,g,h,i,j,k,l,m] |
|   2 | [n,o,p,q,r,s,t,u,v,w,x,y,z] |
| ... | ...                         |
+-----+-----------------------------+

edit2:数据帧a的每一行都是一个危险问题,数据帧B的每一行都是一个游戏。

一共有3个回合,6列和5行,并且有3000个ID。

我正在尝试在A中创建一个新列,如下所示:


+----+-------+--------+-----+----------+
| ID | Round | Column | row | Category |
+----+-------+--------+-----+----------+
|  1 | A     |      1 |   1 | a        |
|  1 | A     |      2 |   1 | b        |
|  1 | A     |      3 |   1 | c        |
|  1 | A     |      4 |   1 | d        |
|  1 | A     |      5 |   1 | e        |
|  1 | A     |      6 |   1 | f        |
|  1 | A     |      1 |   2 | a        |
|  1 | A     |      2 |   2 | b        |
|  1 | A     |      3 |   2 | c        |
|  1 | A     |      4 |   2 | d        |
|  1 | A     |      5 |   2 | e        |
|  1 | A     |      6 |   2 | f        |
+----+-------+--------+-----+----------+

我对如何实际执行此操作非常迷惑。我考虑过使用np.select(conditions,values),其中有13个条件。我认为,如果只有一个id,这会很好地工作,但不是我不确定如何向上缩放。另外,我认为将B中的类别分为13列可能会很有用,但我不确定下一步将是什么。

任何帮助将不胜感激!

编辑:条件如下,尽管我不确定如何合并ID和数据框2中的值

conditions = [
    ((df['round'] == 'A') & (df['column'] == 1)),
    ((df['round'] == 'A') & (df['column'] == 2)),
    ((df['round'] == 'A') & (df['column'] == 3)),
    ((df['round'] == 'A') & (df['column'] == 4)),
    ((df['round'] == 'A') & (df['column'] == 5)),
    ((df['round'] == 'A') & (df['column'] == 6)),
    ((df['round'] == 'B') & (df['column'] == 1)),
    ((df['round'] == 'B') & (df['column'] == 2)),
    ((df['round'] == 'B') & (df['column'] == 3)),    
    ((df['round'] == 'B') & (df['column'] == 4)),
    ((df['round'] == 'B') & (df['column'] == 5)),    
    ((df['round'] == 'B') & (df['column'] == 6)),
    (df['round'] == 'C')
    ]

0 个答案:

没有答案