如何仅保留数据框中的特定行? [复制]

Posted

技术标签:

【中文标题】如何仅保留数据框中的特定行? [复制]【英文标题】:How to keep only specific rows in a dataframe? [duplicate] 【发布时间】:2020-02-17 15:24:20 【问题描述】:

我有一个包含 213 行表示季度的数据框。这里只是一个大块:

quart <- c("2000 Q1", "2000 Q1", "2000 Q1", "2000 Q1", "2000 Q2", "2000 Q2", "2000 Q2", "2000 Q3", "2000 Q3", "2000 Q4", "2000 Q4", "2000 Q4", "2000 Q4", "2001 Q1", "2001 Q1", "2001 Q2", "2001 Q2", "2001 Q2", "2001 Q2")

df <- data.frame(quart)

   quart
1  2000 Q1
2  2000 Q1
3  2000 Q1
4  2000 Q1
5  2000 Q2
6  2000 Q2
7  2000 Q2
8  2000 Q3
9  2000 Q3
10 2000 Q4
11 2000 Q4
12 2000 Q4
13 2000 Q4
14 2001 Q1
15 2001 Q1
16 2001 Q2
17 2001 Q2
18 2001 Q2
19 2001 Q2

我只想选取每个新季度的第一个元素。说清楚:

   quart

1  2000 Q1
2  2000 Q2
3  2000 Q3
4 2000 Q4
5 2001 Q1
6 2001 Q2

谁能帮帮我?

谢谢!

【问题讨论】:

试试df[!duplicated(df$quart), ] 【参考方案1】:

一个非常简单的方法可能是简单地使用 unique():

quart <- c("2000 Q1", "2000 Q1", "2000 Q1", "2000 Q1", "2000 Q2", "2000 Q2", "2000 Q2", "2000 Q3", "2000 Q3", "2000 Q4", "2000 Q4", "2000 Q4", "2000 Q4", "2001 Q1", "2001 Q1", "2001 Q2", "2001 Q2", "2001 Q2", "2001 Q2")

df <- data.frame(quart)

df2 <- unique(df)

【讨论】:

如果有更多列,这不会扩大。 这很好,@jay.sf。 OP,如果这只是数据框中的一列,我的解决方案将返回该列。请说明您的数据是否大于这一列。 对于未来的读者,我将其签署为正确答案,因为这是获得我想要的结果的最快方法。然而,请注意,这仅适用于一列数据框,正如它所指出的那样。所有其他答案都适用于具有多于一列的数据框。谢谢大家!【参考方案2】:

您可以通过 dplyr 在分组数据框上使用 slice()

library(dplyr)
df %>% 
  arrange(quart) %>% 
  group_by(quart) %>% 
  slice(1)

【讨论】:

【参考方案3】:

您可以只要求不重复的值。

Want <- subset(have, !duplicated(have[,"quart"]))

【讨论】:

以上是关于如何仅保留数据框中的特定行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Pandas 的条件删除数据框中的某些行? [复制]

如何仅提取时代细节并在 pandas 数据框中保留其他内容?

在熊猫数据框中按行应用时如何保留数据类型?

在python数据框中删除不包含列中特定字符串的多列的重复项

如何使用熊猫更改数据框中的特定行值? [复制]

根据条件保留熊猫数据框的上 n 行