私は2つのデータフレームを持っています.1つは画面名/表示名を含み、もう1つは個人を含み、姓が画面に表示されるたびに新しい行に各データフレームのすべてのデータを含む3番目のデータフレームを作成しようとしています名前/表示名。機能的には、一致する可能性のある名前のリストが作成されます。非常にゆっくりと完璧に動作しますが、私の現在のコードは、次のようになります。2つのデータフレームを繰り返し処理するためのリストの理解がより高速になりますか?
# Original Social Media Screen Names
# cols = 'userid','screen_name','real_name'
usernames = pd.read_csv('social_media_accounts.csv')
# List Of Individuals To Match To Accounts
# cols = 'first_name','last_name'
individuals = pd.read_csv('individuals_list.csv')
userid, screen_name, real_name, last_name, first_name = [],[],[],[],[]
for index1, row1 in individuals.iterrows():
for index2, row2 in usernames.iterrows():
if (row2['Screen_Name'].lower().find(row1['Last_Name'].lower()) != -1) | (row2['Real_Name'].lower().find(row1['Last_Name'].lower()) != -1):
userid.append(row2['UserID'])
screen_name.append(row2['Screen_Name'])
real_name.append(row2['Real_Name'])
last_name.append(row1['Last_Name'])
first_name.append(row1['First_Name'])
cols = ['UserID', 'Screen_Name', 'Real_Name', 'Last_Name', 'First_Name']
index = range(0, len(userid))
match_list = pd.DataFrame(index=index, columns=cols)
match_list = match_list.fillna('')
match_list['UserID'] = userid
match_list['Screen_Name'] = screen_name
match_list['Real_Name'] = real_name
match_list['Last_Name'] = last_name
match_list['First_Name'] = first_name
私は、各列から行全体を必要とするので、私が試してみましたリストの内包方法が動作していないようです。
は、次の2つのデータセットのサンプルとあなたが探している出力を表示することができますか? – Abbas
データセットは簡単です:usernamesはuserid(int)、screen_name(小文字の小文字はスペースまたは特殊文字ではありません)、real_name(文字列)の3つの列を持ちます。個体はLast_Name(str)とFirst_Name(str)の2つの列を持ちます。目的は、screen_nameまたはreal_nameがLast_Nameのインスタンスと同じ文字列を持つすべてのインスタンスのデータフレームを作成し、その発生ごとにuserid、screen_name、real_name、last_nameおよびfirst_nameを格納することです。 – whateveryousayiam