Python Pandas中有没有一种方法可以使用修改后的列合并两个数据帧而不影响原始数据帧?

Python Pandas中有没有一种方法可以使用修改后的列合并两个数据帧而不影响原始数据帧?,python,pandas,Python,Pandas,我正在尝试合并列上的两个数据帧,这些列包含匹配的名称减去大小写。基本对象采用“标题”格式,而合并对象采用“上级”格式 我可以轻松地将合并对象修改为“title”格式,然后进行合并,但是否可以在不正式修改原始数据帧的情况下临时有效地执行此操作?我也可以复制并修改它,但我的目标是用最少的额外数据帧实现最简单的解决方案 import pandas as pd import numpy as np df1 = pd.DataFrame({'name': ['John', 'Mary', 'Louis'

我正在尝试合并列上的两个数据帧,这些列包含匹配的名称减去大小写。基本对象采用“标题”格式,而合并对象采用“上级”格式

我可以轻松地将合并对象修改为“title”格式,然后进行合并,但是否可以在不正式修改原始数据帧的情况下临时有效地执行此操作?我也可以复制并修改它,但我的目标是用最少的额外数据帧实现最简单的解决方案

import pandas as pd
import numpy as np

df1 = pd.DataFrame({'name': ['John', 'Mary', 'Louis'],
                    'value': np.random.randint(0,100,3)})
df2 = pd.DataFrame({'name': ['MARY', 'JOHN', 'LOUIS'],
                    'value2:': np.random.randint(0,100,3)})

# What I don't want to have to do:
df2['name'] = df2['name'].str.title()
df3 = pd.merge(df1, df2, on = 'name')

# What I want to be able to do (doesn't work)

'''
df3 = pd.merge(df1, df2, left_on = 'name', right_on = title('name'))
'''

输出:

    name    value   value2
0   John    1       20
1   Mary    2       10
2   Louis   3       30
你可以试试这个:-

title = lambda df, column: df[column].str.title() 
pd.merge(df1, df2, left_on = 'name', right_on = title(df2, 'name')).drop(['name_x','name_y'], axis = 1)

请尝试将示例数据和示例结果括起来,以便理解问题。
title=lambda df,column:df[column].str.title()pd.merge(df1,df2,left_on='name',right_on=title(df2,'name'))
@RakeshV由于格式问题,很难理解这一点。你介意把它作为答复转载吗?我假设这是在两条线上,但不能确定。这就是我想要的。我想我希望有一个不那么复杂的方法,但它可能没有那么有用。你通常是怎么处理的?简单的处理临时拷贝,还是修改原来的栏目?我已经更新了答案。我想我们至少需要一份。这真的很好。谢谢你的解答,我没有意识到我可以在临时df列上合并。
title = lambda df, column: df[column].str.title() 
pd.merge(df1, df2, left_on = 'name', right_on = title(df2, 'name')).drop(['name_x','name_y'], axis = 1)