Erstens habe ich 2 Datenrahmen einer, in dem ich den Namen eines Kerls und Seiten von ihm in Spalten gemocht habe. Also nein. von Spalten wird für verschiedene Personen hier unterschiedlich sein, ist das Beispiel. 1. Spalte ist der Name des Benutzers. Dann Seiten von ihm gemocht wird über die Zeile gespeichert.So nein. Spalten für "Random Guy" wird sich von "Mank Rion" unterscheiden. 'BlackBick', '500 Startups' e.t.c sind der Name der Seite. sagen sie mal Name dieses Datenrahmens User_page istNehmen Sie zwei und mehr Datenrahmen und Extrahieren von Daten über eindeutige Schlüssel in Python
random guy BlackBuck GiveMeSport Analytics Ninja
mank nion DJ CHETAS Celina Jaitly Gurkeerat Singh
pop rajuel WOW Editions 500 Startups Biswapati Sarkar
Roshan ghai MensXP No Abuse the smartian
Jetzt habe ich einen anderen Datenrahmen, in der Art von gleichen wie oben ein, sondern an der Stelle der Name Seite gibt es eine Kategorie von page.you ist vielleicht jetzt gibt es verschiedene Kategorien von Seiten auf fb. also sagen wir "BlacBuck" ist die Kategorie "Transport/Fracht". Es gibt Seiten mit dem gleichen Namen und einer anderen Kategorie. Deshalb kann ich den Namen nicht direkt als Schlüssel benutzen. So sieht mein Datenrahmen aus. Sagen wir den Namen dieses Datenrahmens User_category.
random guy Transport/Freight Sport Insurance Company
mank nion Arts/Entertainment Actress Actor/Director
pop rajuel Concert Tour App Page Actor/Director
Roshan ghai News/Media Website Community Public Figure
Jetzt habe ich zwei weitere Datenrahmen. eine, in der ich fb Seiten als erste Spalte und 162 weitere Spalten mit einem Tag für jede Seite habe, gibt es den Wert 1 für i * j Element wenn ith Seite in jth Tag kommt sonst leer gelassen, so wird es aussehen. sagen wir Name dieses Datenrahmens ist Pagetag
der andere haben Namen der Kategorien als 1. Spalte und gleiche 162 wie weiter. so was. Nehmen wir an, der Name dieses Datenrahmens lautet Category_tag.
category_name tag 1 tag2 tag3
Sport 1 1
App Page 1 1
Actor/Director 1
Public Figure 1 1
Nun, was ich habe, um das Tag zu erhalten zählt für jeden Benutzer von Seiten, die er mochte. Dazu muss ich zuerst überprüfen, ob die Seite, die er mag, im Datenrahmen von "Seite_tag" vorhanden ist. Dies ist der dritte Datenrahmen in meiner Frage, wenn dort die Anzahl der Tags vorhanden ist, wie oft ein bestimmter Tag für diesen Benutzer erschienen ist. Dies ist der erste Schritt, wenn der Name der Seite nicht als Nr. gefunden wird. Die Anzahl der Seiten im Pagetag-Datenrahmen (3.) ist begrenzt. Ich gehe zur Kategorie der Seite (vom 2. Datenrahmen in dieser Frage) für die Seiten, die weggelassen werden, und für diese Kategorie zähle ich die Markierungszählung für den spezifischen Benutzer vom Datenrahmen mit dem Namen Category_tags (4. Datenrahmen in dieser Frage) und addiere die Summe Tag-Anzahl und meine Ausgabe etwa so. Output
username tag1 tag2 tag3
random guy 1 2 2
mank nion 2 1 3
pop rajuel 4 0 2
Roshan ghai 0 2 1
a i * j Element auf diesem Datenrahmen zeigt nicht. Mal, dass das j-te Tag für den i-ten Benutzer erscheint. Ich habe Code dafür geschrieben und mehr in R Ich stecke in diesem speziellen Schritt fest. Der Code von R war nicht optimal, da ich viele Schleifen verwendete. Ich wollte rhiz optimal, hoffentlich kann man das in pandas machen.
Dies ist der Code, den ich bisher geschrieben habe. Aber ich denke, es kann effizienter durchgeführt werden PS: aktuelle Nr. Benutzer und Spalte sind sehr groß.
from io import StringIO
import pandas as pd
import numpy as np
# DATA FRAME IMPORT AND MELT
data1 = u'''
random guy,BlackBuck,GiveMeSport,Analytics Ninja
mank nion,DJ CHETAS,Celina Jaitly,Gurkeerat Singh
pop rajuel,WOW Editions,500 Startups,Biswapati Sarkar
Roshan ghai,MensXP,No Abuse,the smartian
'''
## reading and melting the datasheet of user name and page_liked
df1 = pd.read_csv(StringIO(data1), sep=",", header=None)
df1 = pd.melt(df1, id_vars=[0], value_vars=[1,2,3])[[0,'value']]
df1.columns = ['user', 'page_name']
data2 = u'''
random guy,Transport/Freight,Sport,Insurance Company
mank nion,Arts/Entertainment,Actress,Actor/Director
pop rajuel,Concert Tour,App Page,Actor/Director
Roshan ghai,News/Media Website,Community,Public Figure
'''
#reading and melting the data sheet of user name and category of page liked
df2 = pd.read_csv(StringIO(data2), sep=",", header=None)
df2 = pd.melt(df2, id_vars=[0], value_vars=[1,2,3])[[0,'value']]
df2.columns = ['user', 'categories']
data3 = u'''
page_name,tag1,tag2,tag3
BlackBuck,1,1,0
GiveMeSport,1,0,1
Gurkeerat Singh,1,0,1
DJ CHETAS,0,1,1
'''
##reading the meta data of page_name and tag
df3 = pd.read_csv(StringIO(data3), sep=",")
data4 = u'''
category,tag1,tag2,tag3
Sport,0,1,1
App Page,1,0,1
Actor/Director,1,0,0
Public Figure,0,1,1
'''
df4 = pd.read_csv(StringIO(data4), sep=",")
##reading the data of category and tag
##adding a column ctegory in df1 based on index
category = df2['categories']
df1['category'] = category
##creating a list of page which i have in meta_data
meta_list = list(df3.iloc[:,0])
## creating two empty dataframes with column name as same as df1
new_df1=pd.DataFrame(columns=['user','page_name','category'])
new_df2=pd.DataFrame(columns=['user','page_name','category'])
#checking if page in meta list if it is there add that row in newdf1 else in newdf2
for i in range(len(df1)):
if df1.iloc[i,1] in meta_list:
x = df1.iloc[i]
new_df1 = new_df1.append(x, ignore_index=True)
else:
y = df1.iloc[i]
new_df2 = new_df2.append(y, ignore_index=True)
## merging newdf1 and newdf2 on page_name and category repectively
mdf1 = pd.merge(new_df1, df3, how= 'left', on = ['page_name'])
mdf2 = pd.merge(new_df2, df4, how= 'left', on=['category'])
## concatenating the 2 data frame mdf1 and mdf2 and summing the tags for each of them
finaldf = pd.concat([mdf1[['user', 'tag1', 'tag2', 'tag3']].groupby(['user']).agg(sum),
mdf2[['user', 'tag1', 'tag2', 'tag3']].groupby(['user']).agg(sum)]).reset_index()
## finally grouping on user and summing the tags for each user
finaldf1 = finaldf.groupby(['user']).agg(sum).reset_index()
"Also keine Spalten werden für verschiedene Personen hier ist das Beispiel." reorganisiert Ihre Datenrahmen eine Option? Jemand könnte das vielleicht durchlesen, aber ich denke, dass Sie mit einem vernünftigeren Datenmodell besser dran wären. –
@RobertRodkey kann ich kann den Datenrahmen so transversieren. Nein.der Spalte wird anders sein, aber wie genau wird das mein Problem lösen? –