在更多列中合并熊猫

时间:2021-02-05 09:11:41

标签: python pandas dataframe

我在 Pandas 中有以下问题。我有这个数据框:

import pandas as pd

d1 = {'Name': ['c','c','c', 'a', 'a','b','b', 'z', 'y'], 'Project': ['aa','ab','bc', 'aa', 'ab','aa', 'ab','aa', 'ab'], 
     'col2': [3, 4, 6, 6, 6, 6, 6, 2, 4]}

d1 = pd.DataFrame(data=d1)

另外我有这个数据框:

col = {'1': ['aa','ab','bc'], '2': ['aa', 'ab', None]  }

col = pd.DataFrame(data=col)

我想创建一个新列,将 col 数据框中的列名添加到上面 d1 中的每个 Name 和 Project。期望的输出是这样的:

d2 = {'Name': ['c','c','c', 'a', 'a','b','b', 'z', 'y'], 'Project': ['aa','ab','bc', 'aa', 'ab','aa', 'ab','aa', 'ab'], 
     'col2': [3, 4, 6, 6, 6, 6, 6, 2, 4], 'Project_ID': ['1','1','1', '2', '2','2','2', None, None]}

d2 = pd.DataFrame(data=d2)

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

通常你会是这样的:

d1['Project_ID'] = None
for c in col.columns:
    d1.loc[d1['Project'].isin(col[c]), 'Project_ID'] = c

但是由于您在 col['1']col['2'] 中具有相同的值,因此您想要的输出实际上没有意义。