我有2列,我希望第3列是它们之间的最小值。我的数据如下所示:AB021121224324435535636736我想通过以下方式获得C列:ABC02111211224232424353535363637363一些帮助代码:df=pd.DataFrame({'A':[2,2,2,2,3,3,3,3],'B':[1,1,4,4,5,5,6,6]})谢谢! 最佳答案 使用df.min(axis=1)df['c']=df.min(axis=1)dfOut[41]:ABc02111211224232424353535363637363这将返回
我有一个看起来像这样的数据框:我想只保留每个组中连续的年份,如下图,A组中的2005年和B组中的2009年和2011年被删除。我使用df['year_diff']=df.groupby(['group'])['Year'].diff()创建了一个年份差异列,然后仅保留年份差等于1的行。但是,此方法还将删除每个连续年份组中的第一行,因为第一行的年份差异将为NAN。例如,2000年将从组2000-2005中删除。有什么办法可以避免这个问题吗? 最佳答案 转移像OP第一次做的那样获取年份差异。然后检查是否等于1或者之前的值是1yd=df.
这个问题在这里已经有了答案:DeleteacolumnfromaPandasDataFrame(20个答案)关闭6年前。我正在尝试找出使用列名列表在df中删除列的最快方法。这是一种奇特的特征缩减技术。这就是我现在正在使用的,它需要永远。非常感谢任何建议。important2=(important[:-(len(important)-500)])foriinimportant:ifiinimportant2:passelse:df_reduced.drop(i,axis=1,inplace=True)df_reduced.head()
我正在使用以下内容从数据帧梳中选择特定的列,我想将其放入新的数据帧中。个人选择工作正常EG:comb.ix[:,0:1],但是当我尝试使用+组合它们时,我得到了一个不好的结果,第一个选择([:,0:1])卡在了最后dataframe和原始col1中包含的值在出现在行末时被删除。获得我想要的列的正确方法是什么?(我会包含示例数据,但正如您所见,列太多...这就是我尝试这样做的原因)comb.ix[:,0:1]+comb.ix[:,17:342] 最佳答案 如果您想连接df列的子选择,请使用pd.concat:pd.concat([co
我想使用matplotlib生成带有分类行和列标签的pandasDataFrame散点图。示例DataFrame如下所示:importpandasaspddf=pd.DataFrame({"a":[1,2],"b":[3,4]},index=["c","d"])#ab#c12#d34标记大小是各个DataFrame值的函数。到目前为止,我想出了一个笨拙的解决方案,基本上是枚举行和列,绘制数据,然后重建标签:flat=df.reset_index(drop=True).T.reset_index(drop=True).T.stack().reset_index()#level_0leve
我有一个数据框df=pd.DataFrame(data=np.arange(10),columns=['v']).astype(float)如何确保v中的数字是整数?我非常担心舍入/截断/浮点表示错误 最佳答案 与astype(int)比较暂时将您的列转换为int并使用np.array_equal进行测试:np.array_equal(df.v,df.v.astype(int))Truefloat.is_integer您可以将此python函数与apply结合使用:df.v.apply(float.is_integer).all()
遵循thisanswer的精神,我尝试了以下操作,将日期时间的DataFrame列转换为纪元以来的秒数列。df['date']=(df['date']+datetime.timedelta(hours=2)-datetime.datetime(1970,1,1))df['date'].map(lambdatd:td.total_seconds())第二个命令导致以下错误,我不明白。对这里可能发生的事情有什么想法吗?我用apply替换了map,但这无济于事。------------------------------------------------------------------
我想使用pandas.rolling_apply函数在滚动窗口的基础上应用我自己的自定义函数。但是我的函数需要两个参数,并且还有两个输出。这可能吗?下面是一个最小的可重现示例...importpandasaspdimportnumpyasnpimportrandomtmp=pd.DataFrame(np.random.randn(2000,2)/10000,index=pd.date_range('2001-01-01',periods=2000),columns=['A','B'])defgm(df,p):v=(((df+1).cumprod())-1)*preturnv.iloc[
我在其他语言(例如R或SQL)中找到了此选项,但我不太确定如何在Pandas中执行此操作。所以我有一个包含1262列和1行的文件,每次出现特定值时都需要返回列标题。例如这个测试数据框:Datecol1col2col3col4col5col6col701/01/201600:0037.0436.5735.7737.5636.7935.9038.15我需要找到列名称,例如其中值=38.15。这样做的最佳方式是什么?谢谢 最佳答案 既然你只有一行,那么你可以对结果调用iloc[0]并使用它来屏蔽列:In[47]:df.columns[(d
我一直在关注类似的答案here,但是我在使用sklearn和rollingapply时有一些问题。我正在尝试创建z-scores并通过滚动应用进行PCA,但我一直收到'onlylength-1arrayscanbeconvertedtoPythonscalars'错误。按照前面的示例,我创建了一个数据框fromsklearn.preprocessingimportStandardScalerimportpandasaspdimportnumpyasnpsc=StandardScaler()tmp=pd.DataFrame(np.random.randn(2000,2)/10000,in