Pandas 合并多数据帧(关联数据帧)

Pandas 合并多数据帧(关联数据帧),pandas,join,dataframe,tensorflow,concat,Pandas,Join,Dataframe,Tensorflow,Concat,我对熊猫数据帧合并有疑问 请看下面的数据 Rating csv UserID ContentID Rating U-1 C-1 3 U-1 C-2 4 U-3 C-3 1 U-5 C-1 5 Content csv Title ContentID Language T-1 C-1 EN T-2 C-2 EN T-3 C-3 EN User cs

我对熊猫数据帧合并有疑问

请看下面的数据

Rating csv
UserID ContentID Rating 
U-1      C-1       3
U-1      C-2       4
U-3      C-3       1
U-5      C-1       5

Content csv
Title ContentID Language
T-1      C-1      EN
T-2      C-2      EN
T-3      C-3      EN

User csv
UserID Age Gender
U-1    10    1
U-2    20    0
U-3    30    1
U-4    40    0 
U-5    50    1
U-6    60    0
U-7    70    1
我想要结果

UserID ContentID Rating Title Language Age  Gender
U-1      C-1       3     T-1     EN     10     1
U-1      C-2       4     T-2     EN     10     1
U-1      C-3      NAN    T-3     EN     10     1
U-2      C-1      NAN    T-1     EN     20     0   
U-2      C-2      NAN    T-2     EN     20     0
U-2      C-3      NAN    T-3     EN     20     0
U-3      C-1      NAN    T-1     EN     30     1         
U-3      C-2      NAN    T-2     EN     30     1   
U-3      C-3       1     T-3     EN     30     1    
U-4      C-1      NAN    T-1     EN     40     0    
U-4      C-2      NAN    T-2     EN     40     0   
U-4      C-3      NAN    T-3     EN     40     0   
U-5      C-1       5     T-1     EN     50     1          
U-5      C-2      NAN    T-2     EN     50     1    
U-5      C-3      NAN    T-3     EN     50     1    
U-6      C-1      NAN    T-1     EN     60     0     
U-6      C-2      NAN    T-2     EN     60     0     
U-6      C-3      NAN    T-3     EN     60     0     
U-7      C-1      NAN    T-1     EN     70     1     
U-7      C-2      NAN    T-2     EN     70     1     
U-7      C-3      NAN    T-3     EN     70     1    
DF行的总大小为用户ID(用户csv)计数*内容ID(内容csv)计数 (例如>7*3->21行以上)

所有数据帧都是相关的。 -分级/内容->内容ID -评级/用户->用户ID

换句话说,结果数据帧仅为剩余评级区域(NAN),其他区域为非NAN

实际大小内容(6000),用户(220000)->结果行总数:约130000000

我试过了,但这是提高记忆的错误


请帮助我..谢谢..

您可以在
df2.ContentID
df3.UserID
中使用交叉连接和左连接-必要的唯一值:

df = pd.merge(pd.merge(df3.assign(A=1), df2.assign(A=1), on='A'), df1, 'left').drop('A', 1)
print (df)
   UserID  Age  Gender Title ContentID Language  Rating
0     U-1   10       1   T-1       C-1       EN     3.0
1     U-1   10       1   T-2       C-2       EN     4.0
2     U-1   10       1   T-3       C-3       EN     NaN
3     U-2   20       0   T-1       C-1       EN     NaN
4     U-2   20       0   T-2       C-2       EN     NaN
5     U-2   20       0   T-3       C-3       EN     NaN
6     U-3   30       1   T-1       C-1       EN     NaN
7     U-3   30       1   T-2       C-2       EN     NaN
8     U-3   30       1   T-3       C-3       EN     1.0
9     U-4   40       0   T-1       C-1       EN     NaN
10    U-4   40       0   T-2       C-2       EN     NaN
11    U-4   40       0   T-3       C-3       EN     NaN
12    U-5   50       1   T-1       C-1       EN     5.0
13    U-5   50       1   T-2       C-2       EN     NaN
14    U-5   50       1   T-3       C-3       EN     NaN
15    U-6   60       0   T-1       C-1       EN     NaN
16    U-6   60       0   T-2       C-2       EN     NaN
17    U-6   60       0   T-3       C-3       EN     NaN
18    U-7   70       1   T-1       C-1       EN     NaN
19    U-7   70       1   T-2       C-2       EN     NaN
20    U-7   70       1   T-3       C-3       EN     NaN

听起来你想加入(某种类型)。嗨,你的答案是大数据中的raise MemoryError。。在小数据中,你的答案很好,但大数据会引起记忆错误。我使用用户(6000),内容(220000)。请帮帮我。非常抱歉,如果非常大的文件需要更多的
RAM
。也许更好的方法是使用