查找并替换列表中的值(pandas)

时间:2016-03-29 17:57:36

标签: python pandas

我有一个清单

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中的旧数字的最有效方法是什么?

3 个答案:

答案 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中有重复项,这将无法工作,因为索引只会返回第一个匹配项。