Python 通过映射数据框中的多个列在数据框中创建新列

Python 通过映射数据框中的多个列在数据框中创建新列,python,pandas,mapping,Python,Pandas,Mapping,我想通过使用多列将dataframe的一列映射到另一个dataframe。 示例数据帧如下所示: df1 = pd.DataFrame() df1['Date'] = ['2018-08-10','2018-08-10','2018-08-10','2018-08-10','2018-08-10', '2018-08-11','2018-08-11','2018-08-11','2018-08-12','2018-08-12', '20

我想通过使用多列将dataframe的一列映射到另一个dataframe。 示例数据帧如下所示:

df1 = pd.DataFrame()
df1['Date'] = ['2018-08-10','2018-08-10','2018-08-10','2018-08-10','2018-08-10',
               '2018-08-11','2018-08-11','2018-08-11','2018-08-12','2018-08-12',
               '2018-08-13','2018-08-12','2018-08-12','2018-08-12','2018-08-12']
df1['Name'] = ['A','A','A','A','A',
              'B','B','B','C','C',
              'D','D','E','F','F']
df1 ['Orgz'] = ['Alpha','Alpha','Alpha','Alpha','Alpha',
               'Beta','Beta','Beta','Gamma','Gamma',
               'Theta','Theta','Theta','Theta','Theta']
df2 = pd.DataFrame()
df2['Date'] = ['2018-08-10','2018-08-11','2018-08-12','2018-08-12','2018-08-13','2018-08-12','2018-08-12']
df2['Name'] = ['A','B','C','D','D','E','F']
df2 ['Orgz']= ['Alpha','Beta','Gamma','Theta','Theta','Theta','Theta']
df2 ['min'] = [60,85,90,77,25,20,30]
我想通过创建一个新列将列df2.min映射到df1。 但是,我有三个常用列,分别是Date、Name和Orgz to Map。 在这种情况下,我不能只使用名称来映射它,因为在我的实际数据库中,在不同的日期将有相同的名称。 所以我决定使用三列(Date、Orgz和Name)来映射df2。 结果将被分配到df1中的新列。 我的实际结果如下所示:

df1 = pd.DataFrame()
df1['Date'] = ['2018-08-10','2018-08-10','2018-08-10','2018-08-10','2018-08-10',
               '2018-08-11','2018-08-11','2018-08-11','2018-08-12','2018-08-12',
               '2018-08-13','2018-08-12','2018-08-12','2018-08-12','2018-08-12']
df1['Name'] = ['A','A','A','A','A',
              'B','B','B','C','C',
              'D','D','E','F','F']
df1 ['Orgz'] = ['Alpha','Alpha','Alpha','Alpha','Alpha',
               'Beta','Beta','Beta','Gamma','Gamma',
               'Theta','Theta','Theta','Theta','Theta']
df2 = pd.DataFrame()
df2['Date'] = ['2018-08-10','2018-08-11','2018-08-12','2018-08-12','2018-08-13','2018-08-12','2018-08-12']
df2['Name'] = ['A','B','C','D','D','E','F']
df2 ['Orgz']= ['Alpha','Beta','Gamma','Theta','Theta','Theta','Theta']
df2 ['min'] = [60,85,90,77,25,20,30]

从结果中,您会注意到一些名称在同一日期是多个的。在这种情况下,我只想映射第一行上的最小值,该行的其余部分设置为0

我怎么做

谢谢, Zep

我相信您需要使用左连接,然后使用创建的布尔掩码设置
0


嗨,杰兹,非常感谢。感谢您的帮助。当我将相同的概念应用到我的实际数据时,它显示了关键error@Zephyr-keyerror表示有不同的列名,请检查。是的,现在检查