草庐IT

pyhton_Pandas

全部标签

python - pandas.DataFrame.equals 的契约(Contract)

我有一个函数的简单测试用例,它返回一个可能包含NaN的df。我正在测试输出和预期输出是否相等。>>>outputOut[1]:rttsttttct020483009011409690130120702651[3rowsx5columns]>>>expectedOut[2]:rttsttttct020483009011409690130120702651[3rowsx5columns]>>>output==expectedOut[3]:rttsttttct0TrueTrueTrueTrueTrue1TrueTrueTrueTrueTrue2TrueTrueTrueTrueTrue但是,由

python - Pandas Filter 函数返回了一个 Series,但需要一个标量 bool

我试图在pandas数据框上使用过滤器来过滤掉所有匹配重复值的行(当存在重复时需要删除所有行,而不仅仅是第一行或最后一行)。这就是我在编辑器中的工作方式:df=df.groupby("student_id").filter(lambdax:x.count()==1)但是当我用这段代码运行我的脚本时,我得到了错误:TypeError:filterfunctionreturnedaSeries,butexpectedascalarbool在尝试应用过滤器之前,我通过连接另外两个帧来创建数据帧。 最佳答案 应该是:In[32]:group

python - 在包含字符串列表的 Series 上使用 Pandas 字符串方法 'contains'

给定一个简单的PandasSeries,其中包含一些可以由多个句子组成的字符串:In:importpandasaspds=pd.Series(['Thisisalongtext.Ithasmultiplesentences.','Doyousee?Morethanonesentence!','Thisonehasonlyonesentencethough.'])Out:0Thisisalongtext.Ithasmultiplesentences.1Doyousee?Morethanonesentence!2Thisonehasonlyonesentencethough.dtype:o

python - 如何使用 Pandas 重命名重置索引上的多个列

我想弄清楚是否有办法在您尝试重置索引时重命名Pandas列。我在文档中看到,如果只有一列,您可以使用“名称”参数来设置重置索引的列名,但我很好奇是否有办法对多列执行此操作。例如:df1=pd.DataFrame({'A':['a1','a1','a2','a3'],'B':['b1','b2','b3','b4'],'D1':[1,0,0,0],'D2':[0,1,1,0],'D3':[0,0,1,1],})df1.set_index(['B','A']).stack().reset_index()结果留给您:BAlevel_200b1a1D111b1a1D202b1a1D303b2a

python - Pandas :get_dummies 与分类

我有一个数据集,其中有几列包含分类数据。我一直在使用分类函数将分类值替换为数值。data[column]=pd.Categorical.from_array(data[column]).codes我最近遇到了pandas.get_dummies函数。这些可以互换吗?使用一个比另一个有优势吗? 最佳答案 为什么要将分类数据转换为整数?如果那是你的目标,我不相信你会节省内存。df=pd.DataFrame({'cat':pd.Categorical(['a','a','a','b','b','c'])})df2=pd.DataFrame

python - Pandas DataFrames 如何看起来相同但 equals() 失败?

为了确认我理解Pandasdf.groupby()和df.reset_index()的作用,我尝试从数据帧到相同数据的分组版本并返回。往返之后,列和行必须再次排序,因为groupby()影响行顺序而reset_index()影响列顺序,但经过两次快速操作后将列和索引按顺序放回去,数据框看起来相同:相同的列名列表。每列的数据类型相同。相应的索引值严格相等。对应的数据值严格相等。然而,在所有这些检查都成功之后,df1.equals(df5)返回了惊人的值False。这些数据帧之间的区别是equals()揭示了我还没有弄清楚如何检查自己?测试代码:csv_text="""\Title,Yea

Python:防止 Pandas 系列中的值四舍五入为整数

我试图在系列上设置一些值,但它会自动舍入为整数,我应该怎么做才能防止这种情况发生?from__future__importdivisionimportpandasaspdIn[100]:series=pd.Series(range(20))In[101]:series[10]Out[101]:10In[102]:series[10]=0.05In[103]:series[10]Out[103]:0In[104]:series[10]=2.5In[105]:series[10]Out[105]:2In[106]:series[10]=float(2.5)In[107]:series[10

python - 如何通过混合 iloc 和 loc 在 pandas DataFrame 中设置值

假设我想要一个函数来更改DataFrame给定行号中命名列的值。一种选择是找到列的位置并使用iloc,就像这样:defChangeValue(df,rowNumber,fieldName,newValue):columnNumber=df.columns.get_loc(fieldName)df.iloc[rowNumber,columnNumber]=newValue但我想知道是否有一种方法可以一次性使用iloc和loc的魔力,而跳过手动转换。有什么想法吗? 最佳答案 我建议将iloc与Index.get_loc方法结合使用。例如

python - 向量化 pandas.DataFrame 的整合

我有一个力-位移数据的DataFrame。位移数组已设置为DataFrame索引,列是我针对不同测试的各种力曲线。如何计算完成的功(即“曲线下的面积”)?我看了numpy.trapz这似乎可以满足我的需要,但我认为我可以避免像这样循环遍历每一列:importnumpyasnpimportpandasaspdforces=pd.read_csv(...)work_done={}forcolinforces.columns:work_done[col]=np.trapz(forces.loc[col],forces.index))我希望创建一个新的曲线下区域的DataFrame而不是dic

python - Plotly:如何使用 Pandas 数据框定义桑基图的结构?

这听起来像是一个非常宽泛的问题,但如果您让我描述一些细节,我可以向您保证它非常具体。以及令人沮丧、沮丧和愤怒。下图描述了一次苏格兰选举,基于plot.ly中的代码:plotly1:数据集1:data=[['Source','Target','Value','Color','Node,Label','LinkColor'],[0,5,20,'#F27420','Remain+No–28','rgba(253,227,212,0.5)'],[0,6,3,'#4994CE','Leave+No–16','rgba(242,116,32,1)'],[0,7,5,'#FABC13','Remai