1. 程式人生 > >pandas DataFrame高效程式設計方法: 根據多列的值做判斷,生成新的列值,其中多列的值是包含多個值的資料型別

pandas DataFrame高效程式設計方法: 根據多列的值做判斷,生成新的列值,其中多列的值是包含多個值的資料型別

一.遇到的問題描述:

我遇到問題的資料比較複雜,下面以比較簡單的資料為例說明問題,所以這些資料的含義是沒有意義的,可以忽略資料的的具體意義。資料如下所示:

import numpy as np
import pandas as pd
data = {'city': [{'Beijing':1, 'Shanghai':2,"lanzhou":7}, {'Guangzhou':3, 'Shenzhen':4},{'Hangzhou':5, 'Chongqing':6}],
       'word': [["Beijing","Shanghai"],["Guangzhou","Hangzhou"],["Chongqing"]],
       'population': [2100, 2300, 1000]}
frame = pd.DataFrame(data, columns = ['word', 'city', 'population'])
frame

我想要統計word的每行資料中每個元素在city的對應行中是否存在,如果存在將對應的字典裡面的鍵值賦給它,並生成一個新的字典。

二.解決方法:

import ast
def get_title_dict(a,b):
    title_cut_dict={}
    for i in a:
        if i in b:
            title_cut_dict[i]=b[i]
    return title_cut_dict
frame["test"]=frame.apply(lambda x: get_title_dict(x.word, x.city), axis = 1)
frame

結果如下所示:

這個問題還有另外一種處理方式,就是先遍歷frame的每行,然後遍歷該行中的word,然後遍歷city,這樣就會有三層迴圈,速度非常慢。

三.參考資料:

https://blog.csdn.net/qq_30565883/article/details/79464266