我有一个清单
z = ['111111','222222','333333','4444444']
我希望在z中查找每个项目并将其替换为存储在我的数据框“数据”中的等效值,该数据框有两列,旧数字和新数字:
old_numbers = data.ix[i, 'old_ids']
new_numbers = data.ix[i, 'new_ids']
示例:z中的旧号码111111需要更新为121212,222222需要更改为202020,所以我需要从z查找111111和222222并在旧数字列中找到它我的数据帧,然后将列表z 中的分别替换为121212和202020:
# pseudocode:
print z
>>> ['121212',222222','333333','444444']
for each number in z:
if number is in old_numbers column in dataframe:
replace number with equivalent new_number from new_numbers column in dataframe
print z
>>> ['121212',202020','333333','444444']
通过查找数据框中的旧数字并获取相应的新数字,用新数字替换z中的旧数字的最有效方法是什么?
答案 0 :(得分:2)
您可以使用字典理解创建映射:
d = {k: v for k, v in zip(df.old_ids, df.new_ids)}
z_new = [d.get(k, k) for k in z]
>>> z_new
['121212', '202020', '303030', '4444444']
请注意,如果在d.get(k, k)
中找不到查找值,则df.old_ids
默认为原始值。
答案 1 :(得分:1)
我会用Pandas的力量:
if($ionicHistory.currentView().stateName == 'main.aaa') {
$ionicPopup.alert({
title: '<h3 class="text-center">Please enter your information</h3>',
okType: 'button button-primary-alert'
})
}
答案 2 :(得分:0)
这样的事情应该有效:
for index, i in enumerate(z):
if i in old_numbers:
z[index] = new_numbers[old_numbers.index(i)]
如果你在old_numbers中有重复项,这将无法工作,因为索引只会返回第一个匹配项。