删除dataframe的第一行_把dataframe删掉第一行_python – 从Pandas DataFrame中的所有行中减去第一行...

这篇博客介绍了如何在Python的Pandas DataFrame中从所有行中减去第一行。通过示例代码,作者展示了使用`pd.DataFrame(a.values - a['2005'].values)`的方法,尽管这会创建一个新的DataFrame。他还尝试了应用lambda函数和sub()方法,但遇到了问题。文章寻求一种更直接、不创建新DataFrame的方式来完成这一操作。
摘要由CSDN通过智能技术生成

我有一个pandas数据帧:

a = pd.DataFrame(rand(5,6)*10, index=pd.DatetimeIndex(start='2005', periods=5, freq='A'))

a.columns = pd.MultiIndex.from_product([('A','B'),('a','b','c')])

我想从a中减去a [‘2005’]的行.要做到这一点,我试过这个:

In [22]:

a - a.ix['2005']

Out[22]:

A B

a b c a b c

2005-12-31 0 0 0 0 0 0

2006-12-31 NaN NaN NaN NaN NaN NaN

2007-12-31 NaN NaN NaN NaN NaN NaN

2008-12-31 NaN NaN NaN NaN NaN NaN

2009-12-31 NaN NaN NaN NaN NaN NaN

这显然不起作用,因为大熊猫正在进行操作时排列索引.这有效:

In [24]:

pd.DataFrame(a.values - a['2005'].values, index=a.index, columns=a.columns)

Out[24]:

A B

a b c a b c

2005-12-31 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000

2006-12-31 -3.326761 -7.164628 8.188518 -0.863177 0.519587 -3.281982

2007-12-31 3.529531 -4.719756 8.444488 1.355366 7.468361 -4.023797

2008-12-31 3.139185 -8.420257 1.465101 -2.942519 1.219060 -5.146019

2009-12-31 -3.459710 0.519435 -1.049617 -2.779370 4.792227 -1.922461

但是每次我必须做这种操作时,我不想要形成一个新的DataFrame.我尝试过这样的apply()方法:a.apply(lambda x:x-a [‘2005’].values)

但我得到ValueError:无法将大小为6的序列复制到维度为5的数组轴

所以我不确定如何继续.有没有一种简单的方法可以做到这一点,我没有看到?我认为应该有一个简单的方法来实现这一点,因此您不必每次都构建一个新的数据帧.我也尝试了sub()方法,但减法仅应用于第一行,而我想从数据帧中的每一行中减去第一行.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值