Sql 将数据帧与左侧或右侧的熊猫合并
上面是我正在使用的代码。我正在尝试使用pandas合并两个数据帧。但是,我想将地区编号E的左6位数字与地区编号F连接起来。是否仍要这样做?如果没有,我是否可以在实体数据框中创建一个新列,该列采用地区编号E的左6位数字,然后在该列上进行匹配?您可以将前6位数字合并为: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'],
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)