假设我有一个只有一列数据的DataFrame。例如:
np.random.random_integers(0,2,1000)
data = np.cumsum(np.random.random_integers(0,2,1000))
idx = pd.date_range('1-1-2001', freq='D', periods=1000)
df = pd.DataFrame(data, idx)
我希望能够仅返回与上一行不同的行,而不是使用完整的DataFrame。
因此,这样做:
2001-01-20 21
2001-01-21 21
2001-01-22 21
2001-01-23 23
2001-01-24 24
2001-01-25 24
会导致这个结果
2001-01-20 21
2001-01-23 23
2001-01-24 24
现在我会这样做
dff = df.diff() # Compute another Series with the differences
dff.ix[0, ] = df.ix[0, ] # Instead of NAN for the row use first row of df
df['diff'] = dff # Add as column in df
df = df[df['diff'] >= 1] # Filter out
df = df.ix[:, 0:-1] # Drop additional column
这似乎非常复杂。我觉得我错过了什么。有没有想法如何使其更具有Pythonic和Panda风格?
df.drop_duplicates()
有什么问题?而且你的代码无法运行,cumsum
在哪里定义了? - EdChumdf pd.DataFrame([.0,.0,.1,.1,.0,.2,.0],pd.date_range(start='2001-1-1', freq='D', periods=7))
和df.drop_duplicates()
的结果将会得到一个有3行的DataFrame,但是有5个变化... - Joachim