2017-01-26 46 views
0

我正在读取一个表,在我们进一步处理之前,必须对其所有值进行验证。有效值存储在与我们的主表匹配的另一个表中。验证标准是如下几个匹配列:匹配表中的几个列组合

Table 1 (the main data we read in) 

Name --- Unit --- Age --- Address --- Nationality 

以上表明,我们正在从表中读取列名和其他表包含上述列的有效值。当我们仅查看主表中的有效值时,我们必须考虑主数据表中的列的组合,例如Name --- Unit --- Age。如果列组合的特定行中的所有值都与另一个表匹配,那么我们保留该行,否则我们将其删除。

如何解决与Numpy的问题?

谢谢

回答

0

你可以循环遍历行。一个简单/简单的方法将是:

dummy_df = table_df ## make a copy of your table, since we are deleting rows we want to have the original df saved. 

relevant_columns = ['age','name','sex',...] ## define relevant columns, in case either dataframe has columns you dont want to compare on 

for indx in dummy_df.index : 

    ## checks if any row is identical, if so, drops it. 

    if ((np.array(dummy_df.loc[indx][relevant_columns]) == main_df[relevant_columns].values).sum(1) == len(relevant_columns)).sum() > 0: 

     dummy_df = dummy_df .drop(indx) 

ps:我假设数据是在熊猫数据帧格式。
希望它能帮助:)

PS2:如果头/列有不同的名称,它不会工作