GVKun编程网logo

根据条件获取Python Pandas中的第一行数据框(pandas 按条件获取数据)

7

对于想了解根据条件获取PythonPandas中的第一行数据框的读者,本文将提供新的信息,我们将详细介绍pandas按条件获取数据,并且为您提供关于Groupbypandas数据框并根据条件保留所有行

对于想了解根据条件获取Python Pandas中的第一行数据框的读者,本文将提供新的信息,我们将详细介绍pandas 按条件获取数据,并且为您提供关于Groupby pandas 数据框并根据条件保留所有行、Pandas 数据框 python 中的 SQL 查询、Pandas数据框获取每个组的第一行、Python pandas Dataframe来自csv的第一行和最后一行的有价值信息。

本文目录一览:

根据条件获取Python Pandas中的第一行数据框(pandas 按条件获取数据)

根据条件获取Python Pandas中的第一行数据框(pandas 按条件获取数据)

假设我有一个像这样的数据框

import pandas as pddf = pd.DataFrame([[1, 2, 1], [1, 3, 2], [4, 6, 3], [4, 3, 4], [5, 4, 5]], columns=[''A'', ''B'', ''C''])>> df   A  B  C0  1  2  11  1  3  22  4  6  33  4  3  44  5  4  5

原始表更加复杂,具有更多的列和行。

我想获得满足某些条件的第一行。例子:

  1. 获取A> 3的第一行(返回第2行)
  2. 获取A> 4 AND B> 3的第一行(返回第4行)
  3. 获取第一行,其中A> 3 AND(B> 3 OR C> 2)(返回第2行)

但是,如果没有满足特定条件的行,那么我想在我按A降序排序(或者其他情况下按B,C等排序)后得到第一行

  1. 获取A> 6的第一行(按A desc的顺序返回第4行,并获取第一行)

我可以通过在数据帧上进行迭代来做到这一点(我知道那胡扯:P)。因此,我更喜欢使用pythonic方法来解决它。

答案1

小编典典

本教程是熊猫切片的很好的教程。确保您签出。在一些片段上…要对带有条件的数据帧进行切片,请使用以下格式:

>>> df[condition]

这将返回数据框的一部分,您可以使用对其建立索引iloc。这是您的示例:

  1. 获取A> 3的第一行(返回第2行)
    >>> df[df.A > 3].iloc[0]

    A 4
    B 6
    C 3
    Name: 2, dtype: int64

如果您真正想要的是行号,而不是使用iloc,则为df[df.A > 3].index[0]

  1. 获取第一行,其中A> 4 AND B> 3:

    >>> df[(df.A > 4) & (df.B > 3)].iloc[0]

    A 5
    B 4
    C 5
    Name: 4, dtype: int64

  2. 获取第一行,其中A> 3 AND(B> 3 OR C> 2)(返回第2行)

    >>> df[(df.A > 3) & ((df.B > 3) | (df.C > 2))].iloc[0]

    A 4
    B 6
    C 3
    Name: 2, dtype: int64

现在,对于最后一种情况,我们可以编写一个函数来处理返回降序排列的帧的默认情况:

>>> def series_or_default(X, condition, default_col, ascending=False):...     sliced = X[condition]...     if sliced.shape[0] == 0:...         return X.sort_values(default_col, ascending=ascending).iloc[0]...     return sliced.iloc[0]>>> >>> series_or_default(df, df.A > 6, ''A'')A    5B    4C    5Name: 4, dtype: int64

如预期的那样,它返回第4行。

Groupby pandas 数据框并根据条件保留所有行

Groupby pandas 数据框并根据条件保留所有行

如何解决Groupby pandas 数据框并根据条件保留所有行?

我有一个熊猫数据框,如下所示:

import pandas as pd
df = pd.DataFrame({''col1'':[''abc'',''abc'',''xyz'',''cd''],''col2'':[''2020-02-01'',''2020-02-01'',''2020-01-01'',''2020-05-01'',''2020-06-01'']})
df


    col1    col2
0   abc    2020-02-01
1   abc    2020-02-01
2   abc    2020-01-01
3   xyz    2020-01-01
4   xyz    2020-05-01
5   cd     2020-06-01

我想要基于 col1 的 yo groupby 并保留 col2 最大值的所有行

我的预期结果:

    col1    col2
0   abc    2020-02-01
1   abc    2020-02-01
4   xyz    2020-05-01
5   cd     2020-06-01

我尝试了下面的代码,但它只给了我最大值为 col2 的行

df.sort_values(''col2'').groupby([''col1'']).tail(1)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Pandas 数据框 python 中的 SQL 查询

Pandas 数据框 python 中的 SQL 查询

如何解决Pandas 数据框 python 中的 SQL 查询?

我想在 Pandas 数据帧上执行此 sql 脚本,以获取 premoteid 在不同的 cremoteid 中出现的次数。

SELECT count(distinct cremoteid),sr.premoteid
FROM sales_ranking sr
JOIN storesales_hourly sh ON sh.premoteid = sr.premoteid
group by sr.premoteid

我试过了:

df.groupby([''premoteid'']).unique()["cremoteid"].count()

但我收到此错误:

''DataFrameGroupBy'' object has no attribute ''unique''

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Pandas数据框获取每个组的第一行

Pandas数据框获取每个组的第一行

我有一只DataFrame喜欢的熊猫。

df = pd.DataFrame({'id' : [1,1,2,3,4,5,6,7,7],'value'  : ["first","second","first","third","fourth","fifth","fifth"]})

我想通过[“ id”,“ value”]对此分组,并获得每个分组的第一行。

        id   value
0        1   first
1        1  second
2        1  second
3        2   first
4        2  second
5        3   first
6        3   third
7        3  fourth
8        3   fifth
9        4  second
10       4   fifth
11       5   first
12       6   first
13       6  second
14       6   third
15       7  fourth
16       7   fifth

预期结果

    id   value
     1   first
     2   first
     3   first
     4  second
     5  first
     6  first
     7  fourth

我尝试了以下操作,仅给出的第一行DataFrame。任何有关此的帮助表示赞赏。

In [25]: for index,row in df.iterrows():
   ....:     df2 = pd.DataFrame(df.groupby(['id','value']).reset_index().ix[0])

Python pandas Dataframe来自csv的第一行和最后一行

Python pandas Dataframe来自csv的第一行和最后一行

全部 –

我期待从一个非常大的csv的第一行和最后一行创建一个pandas DataFrame.本练习的目的是能够轻松地从这些csv文件中的第一个和最后一个条目中获取一些属性.我使用以下方法抓住csv的第一行没有问题:

pd.read_csv(filename,nrows=1)

我也可以通过各种方式抓取文本文件的最后一行,例如:

with open(filename) as f:
    last_line = f.readlines()[-1]

但是,将这两个东西放到一个DataFrame中会让我感到厌恶.有关如何最好地实现这一目标的任何见解?

编辑注意:我正在尝试完成此任务,而不是首先将所有数据加载到单个DataFrame中,因为我正在处理相当大(> 15MM行)的csv文件.

谢谢!

解决方法

只需使用头部和尾部和concat.您甚至可以调整行数.

import pandas as pd

df = pd.read_csv("flu.csv")
top = df.head(1)
bottom = df.tail(1)
concatenated = pd.concat([top,bottom])

print concatenated

结果:

Date  Cases
0      9/1/2014     45
121  12/31/2014     97

调整头部和尾部从顶部开始5行,从底部调整10行…

Date  Cases
0      9/1/2014     45
1      9/2/2014    104
2      9/3/2014     47
3      9/4/2014    108
4      9/5/2014     49
112  12/22/2014     30
113  12/23/2014     81
114  12/24/2014     99
115  12/25/2014     85
116  12/26/2014     55
117  12/27/2014     91
118  12/28/2014     68
119  12/29/2014    109
120  12/30/2014     55
121  12/31/2014     97

如果您不想将整个CSV文件作为数据框加载,可以使用的一种可能方法是将它们单独处理为CSV.以下代码与您的方法类似.

import pandas as pd
import csv

top = pd.read_csv("flu.csv",nrows=1)
headers = top.columns.values

with open("flu.csv","r") as f,open("flu2.csv","w") as g:
    last_line = f.readlines()[-1].strip().split(",")
    c = csv.writer(g)
    c.writerow(headers)
    c.writerow(last_line)

bottom = pd.read_csv("flu2.csv")
concatenated = pd.concat([top,bottom])
concatenated.reset_index(inplace=True,drop=True)

print concatenated

除索引外,结果相同.测试了一百万行,并在大约一秒钟内处理.

Date  Cases
0   9/1/2014     45
1  7/25/4885     99
[Finished in 0.9s]

它如何扩展到1500万行,也许这就是你现在的球赛.
所以我决定对15,728,626行进行测试,结果看起来不错.

Date  Cases
0   9/1/2014     45
1  7/25/4885     99
[Finished in 3.3s]

关于根据条件获取Python Pandas中的第一行数据框pandas 按条件获取数据的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Groupby pandas 数据框并根据条件保留所有行、Pandas 数据框 python 中的 SQL 查询、Pandas数据框获取每个组的第一行、Python pandas Dataframe来自csv的第一行和最后一行等相关知识的信息别忘了在本站进行查找喔。

本文标签: