从数据帧pandas y phyton 3获取信息

时间:2017-12-11 16:10:25

标签: python-3.x pandas dataframe

我有两个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))

  • 具有资格认证的联系人数量> 100和< 300
  • 具有资格认证的联系人数量> 300
  •   -

我尝试过但失败了

df_qua_lower100 = df_us_cont[df_us_cont['qualification']<100]
df_qua_lower100['user_id'].value_counts()

到目前为止,我可以获得每个qualification<100user_id的联系人数量的信息。但我无法确定有多少人有accesibility>=4&#39;

我试图解释我能做的最好的事情

1 个答案:

答案 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()