我有两个数据帧;df1有我的原始数据,df2有需要在df1中更新的密钥。你知道吗
cw=
id adgroup cost
1001 GoogleMaps 101,1
1002 Google 101,1
1003 AppStore 101,1
1004 GoogleDocs 101,1
reff_table=
adgroup new_adgroup
GoogleMaps G_maps
Google GG
AppStore APG
GoogleDocs DOC
我就是这样做的:
m1 = cw.loc[cw['adgroup']=='GoogleMaps'].replace({'GoogleMaps' :'G_maps'})
m2 = cw.loc[cw['adgroup']=='GoogleMaps'].replace({'Google' :'GG'})
final_cw = pd.concat([m1, m2)]
手工操作是一个漫长的过程,我需要找到更有效的方法来完成它。你知道吗
使用
Series.replace
您可以使用合并/联接
原始数据帧:
您可以创建包含引用的数据帧:
在
adgroup
上合并它们将使引用值与原始数据中的正确行对齐(然后您可以根据需要删除/重命名/重新排列列):联接方法
假设您的原始数据帧和参考数据帧不是完美的匹配-您如何处理多余/缺少的行?你知道吗
您可以使用许多连接方法:
left
、right
、outer
、inner
Pandasdocumentation对这些有一个简短的解释,但是假设您的参考数据帧缺少
adgroup
的AppStore
代码(如果您的原始数据帧也缺少某些内容,同样的想法也适用),并且如下所示:原始数据中的
AppStore
行会发生什么变化?你可以控制。。。你知道吗如果要对原始数据进行优先级排序并确保保留这些行,可以使用
left
联接,只需为缺少的代码提供NA
值:相反,如果您希望对引用数据帧进行优先级排序,以便只有在引用中找到的代码在输出中,那么可以使用
right
联接。请注意,由于AppStore
不在引用数据框中,原始数据中的AppStore
行将被删除:给定以下输入:
请尝试以下单行代码:
并给出:
如果将索引设置为另一个数据帧上的
'ad_group'
列,则可以使用pandas.Series.map函数替换原始数据帧'ad_group'
列。你知道吗相关问题 更多 >
编程相关推荐