对于想了解根据条件获取PythonPandas中的第一行数据框的读者,本文将提供新的信息,我们将详细介绍pandas按条件获取数据,并且为您提供关于Groupbypandas数据框并根据条件保留所有行
对于想了解根据条件获取Python Pandas中的第一行数据框的读者,本文将提供新的信息,我们将详细介绍pandas 按条件获取数据,并且为您提供关于Groupby pandas 数据框并根据条件保留所有行、Pandas 数据框 python 中的 SQL 查询、Pandas数据框获取每个组的第一行、Python pandas Dataframe来自csv的第一行和最后一行的有价值信息。
本文目录一览:- 根据条件获取Python Pandas中的第一行数据框(pandas 按条件获取数据)
- Groupby pandas 数据框并根据条件保留所有行
- Pandas 数据框 python 中的 SQL 查询
- Pandas数据框获取每个组的第一行
- Python pandas Dataframe来自csv的第一行和最后一行
根据条件获取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
原始表更加复杂,具有更多的列和行。
我想获得满足某些条件的第一行。例子:
- 获取A> 3的第一行(返回第2行)
- 获取A> 4 AND B> 3的第一行(返回第4行)
- 获取第一行,其中A> 3 AND(B> 3 OR C> 2)(返回第2行)
但是,如果没有满足特定条件的行,那么我想在我按A降序排序(或者其他情况下按B,C等排序)后得到第一行
- 获取A> 6的第一行(按A desc的顺序返回第4行,并获取第一行)
我可以通过在数据帧上进行迭代来做到这一点(我知道那胡扯:P)。因此,我更喜欢使用pythonic方法来解决它。
答案1
小编典典本教程是熊猫切片的很好的教程。确保您签出。在一些片段上…要对带有条件的数据帧进行切片,请使用以下格式:
>>> df[condition]
这将返回数据框的一部分,您可以使用对其建立索引iloc
。这是您的示例:
- 获取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]
。
获取第一行,其中A> 4 AND B> 3:
>>> df[(df.A > 4) & (df.B > 3)].iloc[0]
A 5
B 4
C 5
Name: 4, dtype: int64获取第一行,其中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 数据框并根据条件保留所有行?
我有一个熊猫数据框,如下所示:
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 数据帧上执行此 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数据框获取每个组的第一行
我有一只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的第一行和最后一行
我期待从一个非常大的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文件.
谢谢!
解决方法
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的第一行和最后一行等相关知识的信息别忘了在本站进行查找喔。
本文标签: