对于设置PythonDataFrame感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解设置打开,并且为您提供关于DataFramesPython如何在Python中的Dataframe中将A
对于设置Python DataFrame感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解设置打开,并且为您提供关于DataFrames Python 如何在 Python 中的 Dataframe 中将 A 列中的单元格 A1 与 B2 列中的单元格循环、python - 如何按两列或多列对python pandas中的dataFrame进行排序?、Python DaskDataframe按列分组、Python datacompy 找出两个DataFrames不同的地方的宝贵知识。
本文目录一览:- 设置Python DataFrame(设置打开)
- DataFrames Python 如何在 Python 中的 Dataframe 中将 A 列中的单元格 A1 与 B2 列中的单元格循环
- python - 如何按两列或多列对python pandas中的dataFrame进行排序?
- Python DaskDataframe按列分组
- Python datacompy 找出两个DataFrames不同的地方
设置Python DataFrame(设置打开)
我正在从R过渡到Python。我刚开始使用熊猫。我有一个很好的子集的R代码:
k1 <- subset(data, Product = p.id & Month < mn & Year == yr, select = c(Time, Product))
现在,我想在Python中做类似的事情。到目前为止,这是我得到的:
import pandas as pddata = pd.read_csv("../data/monthly_prod_sales.csv")#first, index the dataset by Product. And, get all that matches a given ''p.id'' and time. data.set_index(''Product'') k = data.ix[[p.id, ''Time'']]# then, index this subset with Time and do more subsetting..
我开始感到自己在以错误的方式这样做。也许,有一个优雅的解决方案。有人可以帮忙吗?我需要从我拥有的时间戳中提取月份和年份并进行子设置。也许有一条线可以完成所有这一切:
k1 <- subset(data, Product = p.id & Time >= start_time & Time < end_time, select = c(Time, Product))
谢谢。
答案1
小编典典我将假设Time
和Product
是中的列DataFrame
, df
是的实例DataFrame
,而其他变量是标量值:
现在,您必须引用DataFrame
实例:
k1 = df.loc[(df.Product == p_id) & (df.Time >= start_time) & (df.Time < end_time), [''Time'', ''Product'']]
由于&
运算符与比较运算符之间的优先级,因此括号也是必需的。该&
运算符实际上是一个重载的按位运算符,其优先级与算术运算符相同,而算术运算符的优先级又高于比较运算符。
在pandas
0.13中,DataFrame.query()
将提供一种新的实验方法。这与子集对select
参数取模非常相似:
与query()
您一起这样做:
df[[''Time'', ''Product'']].query(''Product == p_id and Month < mn and Year == yr'')
这是一个简单的例子:
In [9]: df = DataFrame({''gender'': np.random.choice([''m'', ''f''], size=10), ''price'': poisson(100, size=10)})In [10]: dfOut[10]: gender price0 m 891 f 1232 f 1003 m 1044 m 985 m 1036 f 1007 f 1098 f 959 m 87In [11]: df.query(''gender == "m" and price < 100'')Out[11]: gender price0 m 894 m 989 m 87
您感兴趣的最终查询甚至可以利用链式比较,如下所示:
k1 = df[[''Time'', ''Product'']].query(''Product == p_id and start_time <= Time < end_time'')
DataFrames Python 如何在 Python 中的 Dataframe 中将 A 列中的单元格 A1 与 B2 列中的单元格循环
这是你想要的吗?
df.groupby('Column_1').agg({'Column_2': ['first','last']})
Column_2
first last
Column_1
A 1-1-2000 1-1-2013
B 1-1-2001 1-1-2010
C 1-1-2002 1-1-2011
D 1-1-2015 1-1-2015
F 1-1-2020 1-1-2020
python - 如何按两列或多列对python pandas中的dataFrame进行排序?
假设我有一个带有列的数据框a
,b
并且c
,我想按列b
按升序对数据框进行排序,并按列c
按降序对数据框进行排序,我该怎么做?
答案1
小编典典从 0.17.0 版本开始,该sort
方法已被弃用,取而代之的是sort_values
. sort
在 0.20.0
版本中被完全删除。论点(和结果)保持不变:
df.sort_values([''a'', ''b''], ascending=[True, False])
您可以使用 的升序参数sort
:
df.sort([''a'', ''b''], ascending=[True, False])
例如:
In [11]: df1 = pd.DataFrame(np.random.randint(1, 5, (10,2)), columns=[''a'',''b''])In [12]: df1.sort([''a'', ''b''], ascending=[True, False])Out[12]: a b2 1 47 1 31 1 23 1 24 3 26 4 40 4 39 4 35 4 18 4 1
正如@renadeen 评论的那样
默认情况下没有排序!因此,您应该将排序方法的结果分配给变量或将 inplace=True 添加到方法调用中。
也就是说,如果你想重用 df1 作为排序的 DataFrame:
df1 = df1.sort([''a'', ''b''], ascending=[True, False])
要么
df1.sort([''a'', ''b''], ascending=[True, False], inplace=True)
Python DaskDataframe按列分组
如何解决Python DaskDataframe按列分组?
我正在尝试在简单的数据帧上计算groupby操作:
import dask.dataframe as dd,t pandas as pd numpy as np
pdf = pd.DataFrame({''A'':[1,2,1],''B'':[4,5,6],''C'':[7,8,9],''D'':[1,3]})
pdf.columns=[''A'',''A'',''B'',''B'']
pdf.groupby(by=pdf.columns,axis=1).mean() # works
Out[83]:
A B
0 2.5 4.0
1 3.5 5.0
2 3.5 6.0
但是很快:
ddf = dd.from_pandas(pdf,npartitions=1)
#group = ddf.groupby(by=ddf.columns,axis=1).mean() #breaks
#group = ddf.groupby(by=list(ddf.columns),axis=1).mean() #breaks
TypeError: __init__() got an unexpected keyword argument ''axis''
文档说明(坐标轴:{0或“索引”,1或“列”},默认为0(在dask中不受支持)`)。 有工作区吗?
作为参考,沿着axis=0
分组时不会发生这种情况:
pdf = pd.DataFrame({''A'':[1,3]})
pdf.groupby(''A'').mean()
ddf = dd.from_pandas(pdf,npartitions=1)
ddf.groupby(''A'').mean().compute()
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
Python datacompy 找出两个DataFrames不同的地方
本篇博客解决在两个几乎完全相同的DataFrame当中如何找出不相同的元素,并使用datacompy直观的显示出来。
x表:
让x1和x2都是x的副本,则此时x1和x2的值是相同:
x1=x.copy() x2=x.copy()
将其中x2的一个数据赋值为2000
x2.loc[''罗梓烜''][''20220125'']=2000
x1[x1==x2].head(25) # 如何对不相等的数据进行纠正
此时可以看到下图这个数据是NaN值,说明对于这个数据来说x1和x2是不相同的
x1[x1==x2].isnull().sum()
下图说明在20220125
这一列当中存在一个NaN
值,也就是我们刚刚赋值的地方:
但是现在还是不能确定出有异常值(也就是不相等的值的那行数据),因此我们考虑使用datacompy
安装:
pip install datacompy
import datacompy,pandas as pd,sys compy=datacompy.Compare(x1,x2,on_index=True) compy print(compy.matches()) print(compy.report())
此时就可以很清晰的看到两个DataFrame当中不相同的值了:
到此这篇关于Python datacompy 找出两个DataFrames不同的地方 的文章就介绍到这了,更多相关Python 两个Dataframe不同内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
- Python中pandas dataframe删除一行或一列:drop函数详解
- python pandas dataframe 按列或者按行合并的方法
- Python DataFrame.groupby()聚合函数,分组级运算
- Python pandas.DataFrame 找出有空值的行
- python之DataFrame实现excel合并单元格
- python DataFrame获取行数、列数、索引及第几行第几列的值方法
- python 创建一个空dataframe 然后添加行数据的实例
- python pandas.DataFrame.loc函数使用详解
- Python将DataFrame的某一列作为index的方法
关于设置Python DataFrame和设置打开的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于DataFrames Python 如何在 Python 中的 Dataframe 中将 A 列中的单元格 A1 与 B2 列中的单元格循环、python - 如何按两列或多列对python pandas中的dataFrame进行排序?、Python DaskDataframe按列分组、Python datacompy 找出两个DataFrames不同的地方的相关知识,请在本站寻找。
本文标签: