Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将数据帧与左侧或右侧的熊猫合并_Sql_Python 3.x_Pandas_Dataframe_Merge - Fatal编程技术网

Sql 将数据帧与左侧或右侧的熊猫合并

Sql 将数据帧与左侧或右侧的熊猫合并,sql,python-3.x,pandas,dataframe,merge,Sql,Python 3.x,Pandas,Dataframe,Merge,上面是我正在使用的代码。我正在尝试使用pandas合并两个数据帧。但是,我想将地区编号E的左6位数字与地区编号F连接起来。是否仍要这样做?如果没有,我是否可以在实体数据框中创建一个新列,该列采用地区编号E的左6位数字,然后在该列上进行匹配?您可以将前6位数字合并为: entity_data = {'STATE_CD_E': ['NY', 'NY', 'NY'], 'INTERMEDIATE_NUMBER_E': ['1111', '2222', '3333'],

上面是我正在使用的代码。我正在尝试使用pandas合并两个数据帧。但是,我想将地区编号E的左6位数字与地区编号F连接起来。是否仍要这样做?如果没有,我是否可以在实体数据框中创建一个新列,该列采用地区编号E的左6位数字,然后在该列上进行匹配?

您可以将前6位数字合并为:

entity_data = {'STATE_CD_E': ['NY', 'NY', 'NY'],
           'INTERMEDIATE_NUMBER_E': ['1111', '2222', '3333'],
           'DISTRICT_NUMBER_E': ['123456789012', '123412341234', 
           '121212121212'],
           'FINANCE_NUMBER_E': ['123456', '123412', '121212']  }

df_entity = pd.DataFrame(entity_data, index = ['School_1', 'School_2', 
            'School_3'])

finance_data = {'STATE_CD_F': ['NY', 'NY', 'NY'],
           'INTERMEDIATE_NUMBER_F': ['1111', '2222', '3333'],
           'DISTRICT_NUMBER_F': ['123456', '123412', '121212']  }

df_finance = pd.DataFrame(finance_data, index = ['School_1', 'School_2', 
             'School_3'])

print("\n")
print(df_entity)
print("\n")
print(df_finance)
print("\n")
print("\n")
print("\n")



df_merge = pd.merge(df_entity, df_finance[['INTERMEDIATE_NUMBER_F', 
           'DISTRICT_NUMBER_F']], right_on = ['DISTRICT_NUMBER_F'], left_on= 
           ['FINANCE_NUMBER_E'], how='left')

当我运行你给我的代码时,这并没有拉入地区号码。@Taylor,这个代码没有什么作用?你想让这个代码做什么?不,你是对的。我正在打印原始的df_实体。我将其设置为一个新变量,然后将其打印出来,并使您的输出匹配。这很有效。非常感谢。虽然此代码可以回答问题,但提供有关如何和/或为什么解决问题的附加上下文将提高答案的长期价值。@Nic3500感谢您的注意。我对代码添加了一些澄清。
df_entity.merge(df_finance, left_on=df_entity.DISTRICT_NUMBER_E.str[:6],
                right_on='DISTRICT_NUMBER_F')

  DISTRICT_NUMBER_E FINANCE_NUMBER_E INTERMEDIATE_NUMBER_E STATE_CD_E  \
0      123456789012           123456                  1111         NY   
1      123412341234           123412                  2222         NY   
2      121212121212           121212                  3333         NY   

  DISTRICT_NUMBER_F INTERMEDIATE_NUMBER_F STATE_CD_F  
0            123456                  1111         NY  
1            123412                  2222         NY  
2            121212                  3333         NY  
# create a key which satisfy the condition for joining the dataframes
df_entity['key'] = df_entity['DISTRICT_NUMBER_E'].str[:6]

# join the both dataframe using the new key into one merged dataframe
# optional use caluse how = 'left'/'right'/'outer' for specific join
merged_df = pd.merge(df_entity, df_finance, left_on='key', right_on='DISTRICT_NUMBER_F')

# optional: dorp the key if not needed anymore
merged_df.drop('key', axis=1, inplace=true)