我有两个csv文件。联系人和用户。
如何将数据加载到数据框并合并它们
首先,我加载一个包含用户名的数据框:
import pandas as pd
import numpy as np
df_users= pd.read_csv('./Users_001.csv',sep=',',usecols=[0,2,3])
然后我从每个用户的联系人中加载信息
df_contacts = pd.read_csv('./Contacts_001.csv',sep=',',usecols=[0,1,5,48,55,56,57,83,58])
df_users列名称为:user_id, Name, Surname
df_contacts列名称为:Contact ID, id user owner, fullname, qualification, ...
我想使用user_id
和'id user owner'
合并两个数据框,因为它们代表相同的信息。为此,我首先更改df_contacts
上的列名称,然后合并
dfcontactos.columns = ['ID de Contacto','user_id','fullname','qualification','accesibility' ... ]
df_us_cont = pd.merge(dfcontactos,df_usuarios,on='user_id')
现在df_us_cont
包含来自用户和联系人的信息。
我想做什么
只有18 user_id
但有500个联系人。对于我想知道的每个用户:
具有资格的联系人数量< 100
对于具有资格< 100
的联系人有多少联系人具有辅助功能> = 4
可访问性是离散数字(0-5))
我尝试过但失败了
df_qua_lower100 = df_us_cont[df_us_cont['qualification']<100]
df_qua_lower100['user_id'].value_counts()
到目前为止,我可以获得每个qualification<100
与user_id
的联系人数量的信息。但我无法确定有多少人有accesibility>=4
&#39;
我试图解释我能做的最好的事情
答案 0 :(得分:1)
首先,您可以在不更改列名的情况下进行合并
df_us_cont = dfcontactos.merge(dfcontactos,left_on='id user owner',right_on='user_id')
如果使用loc
,可以根据需要添加任意数量的条件df_us_cont.loc[(df_us_cont['qualification']<100) & (df_us_cont['accesibility']>=4),'user_id'].value_counts()
具有资格认证的联系人数量&gt; 100和&lt; 300
df_us_cont.loc[(df_us_cont['qualification']>100) &(df_us_cont['qualification']<300) & (df_us_cont['accesibility']>=4),'user_id'].value_counts()
具有资格认证的联系人数量&gt; 300
df_us_cont.loc[(df_us_cont['qualification']>300) & (df_us_cont['accesibility']>=4),'user_id'].value_counts()