Python Pandas:基于if-else语句并使用来自另一个数据帧的值在数据帧中创建列
我有两个数据帧A和B,如下所示:Python Pandas:基于if-else语句并使用来自另一个数据帧的值在数据帧中创建列,python,pandas,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 |
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
我正在尝试在中创建一个新列,如下所示:
+----+-------+--------+-----+----------+
| 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(条件,值),其中有13个条件。我想如果只有一个id的话,这会很好地工作,但我不知道如何向上扩展它。此外,我认为将B中的类别划分为13列可能有用,但我不确定下一步是什么
任何帮助都将不胜感激
编辑:条件如下,但我不确定如何合并ID和来自dataframe 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')
]
你能解释一下匹配的逻辑吗。为什么它在第1行和第2行重复?您来自DFU b的类别被映射到您的ID和DFU a中的列?@Erfan它是来自Jeopardy的数据,所以匹配工作就像您可以解释匹配的逻辑一样,为什么a、b、c、d、e、f只是重复?是否需要匹配类别列表中的前6个条目['a'、'b'、'c'、'd'、'e'、'f'、'g'、'h'、'i'、'j'、'k'、'l'、'm'] ?