如何基于现有列提取和创建数据集中的新列

时间:2018-06-17 22:42:12

标签: python r regex

我数据集中2列的示例切片,稍后需要。

**City**    **Ranking**
 Boston        9  of 2972
 Boston        60 of 2972
 Miami         6  of 1444
 Miami         200 of 1444
 Miami          3  of 1444
 Miami          1  of 1444

我想创建一个名为individual.rank的新列。它基于Ranking列。我知道如何打印与每个城市相关的数据行,我只需要知道如何提取以及如何执行individual.rank列。 结果应该像迈阿密表格那样:

**City**   **Ranking**  **individual.rank**
 Miami       1 of 1444          1
 Miami       2 of 1444          2
 Miami       3 of 1444          3

排序Ranking我可以像特定城市一样:

MiamiTable = data.loc[data['City'] == 'Miami']
MiamiTable.sort_values('Ranking')

我在R中使用我不理解的函数和正则表达式。但我不知道如何用Python做到这一点。 (df.restaurant.data是数据集):

pattern <- "[0-9?,]+" # 
pattern.end <- "[0-9?,]+$"
df.restaurant.data <- df.restaurant.data %>%  
    mutate(individual.rank = str_replace(str_extract(Ranking, pattern),
                                         ",", "") %>% 
               as.numeric())

3 个答案:

答案 0 :(得分:1)

你应该使用两个R包:tidyr和dplyr:

s.getName() == "In Progress" && r.getColumn() == 1 && r.getValue() == "Completed"

答案 1 :(得分:0)

您使用的是databaseReference = FirebaseDatabase.getInstance().getReference(); DatabaseReference dbRefFirstTimeCheck = databaseReference.child("User").child(user.getUid()).child("Nickname"); dbRefFirstTimeCheck.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { if(dataSnapshot.exists()) { showNewUserBox(); } } @Override public void onCancelled(DatabaseError databaseError) { throw databaseError.toException(); // don't ignore errors } }); 吗?如果是这样,这似乎达到了你所追求的目标。

pandas

执行字符串替换以删除第一个空格之后的任何内容,然后将结果转换为整数。然后排序:

MiamiTable = data.loc[data['City'] == 'Miami']

MiamiTable['individual_rank'] = MiamiTable.Ranking.str.replace(r' .*', '').astype('int')

答案 2 :(得分:0)

您可以使用正则表达式,例如df$new_col <- gsub(".*of","", df$original_col)