Python 使用映射转换数据帧
我有一个熊猫数据框。具有客户信息的Df1:Python 使用映射转换数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个熊猫数据框。具有客户信息的Df1: Customer_Name Demand John 100 Mike 200 ... 还有一个字典,上面有客户名称和客户代码之间的映射 Customer_Name Customer_Code John 1 Mike 2 ... 我想提出一个新的数据帧,如Df1,但使用客户代码而不是名称: Customer_Code De
Customer_Name Demand
John 100
Mike 200
...
还有一个字典,上面有客户名称和客户代码之间的映射
Customer_Name Customer_Code
John 1
Mike 2
...
我想提出一个新的数据帧,如Df1,但使用客户代码而不是名称:
Customer_Code Demand
1 100
2 200
...
为此,我使用以下代码:
df3=data.replace({"customer_code": mapp})
Raw=data_m[['Demand','customer_code]]
它给了我正确的结果,但是速度非常慢。我想知道是否有更有效的方法进行这种映射和转换?a
merge
应该可以
df = df1.merge(df2)
df
Customer_Name Demand Customer_Code
0 John 100 1
1 Mike 200 2
如果您想去掉第一列,请调用df.drop('Customer\u Name',1)
:
或者,列上的索引:
df[['Customer_Code', 'Demand']]
Customer_Code Demand
0 1 100
1 2 200
或者,您可以使用
df.map
df1['Customer_Code'] = df1.Customer_Name.map(\
df2.set_index('Customer_Name').Customer_Code)
df1
Customer_Name Demand Customer_Code
0 John 100 1
1 Mike 200 2
一个
合并
就可以了
df = df1.merge(df2)
df
Customer_Name Demand Customer_Code
0 John 100 1
1 Mike 200 2
如果您想去掉第一列,请调用df.drop('Customer\u Name',1)
:
或者,列上的索引:
df[['Customer_Code', 'Demand']]
Customer_Code Demand
0 1 100
1 2 200
或者,您可以使用
df.map
df1['Customer_Code'] = df1.Customer_Name.map(\
df2.set_index('Customer_Name').Customer_Code)
df1
Customer_Name Demand Customer_Code
0 John 100 1
1 Mike 200 2
您说过您的第二个数据集是一个字典,所以您希望在合并这两个数据集之前将其转换为数据帧:
df2 = pd.DataFrame(dict_name, columns=['Customer_Name', 'Customer_Code'])
# Merge DataFrames and only keep Customer_Code and Demand
df3 = df1.merge(df2)[['Customer_Code', 'Demand']]
Customer_Code Demand
0 1 100
1 2 200
您说过您的第二个数据集是一个字典,所以您希望在合并这两个数据集之前将其转换为数据帧:
df2 = pd.DataFrame(dict_name, columns=['Customer_Name', 'Customer_Code'])
# Merge DataFrames and only keep Customer_Code and Demand
df3 = df1.merge(df2)[['Customer_Code', 'Demand']]
Customer_Code Demand
0 1 100
1 2 200
不必小气。您的回答假设第二个数据集是一个数据帧,他说这是一个字典。我只是向他展示了如何在合并之前转换它,并为他提供了一种方法,使他想要的列保持在他想要的顺序。@EvanNowak,因为它是一个数据帧。我从未见过一本看起来像数据帧的“字典”。是吗?这是一个完整的答案,给出了两个有用的选择。我不喜欢别人给我发相同的内容+我给你的,不要小气。您的回答假设第二个数据集是一个数据帧,他说这是一个字典。我只是向他展示了如何在合并之前转换它,并为他提供了一种方法,使他想要的列保持在他想要的顺序。@EvanNowak,因为它是一个数据帧。我从未见过一本看起来像数据帧的“字典”。是吗?这是一个完整的答案,给出了两个有用的选择。我不喜欢别人给我发相同的内容+从我这里得到1。