我在 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)
感谢您的帮助!
答案 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']
中具有相同的值,因此您想要的输出实际上没有意义。