1
我有以下形式比较时改变行和前一行中的熊猫数据帧
import pandas as pd
df = pd.DataFrame({
'a': ['apples', 'plums', 'pears', 'pears', 'pears'],
'b': ['grapes', 'grapes', 'grapes', 'grapes', 'bananas'],
'c': [0, 0, 1, 0, 1]
})
和其比较列表(此的细节并不重要)的函数的
def compare(old_fruit, new_fruit):
if set(new_fruit) - set(old_fruit) == {'pears'}:
return 1
else:
return 0
的纵向数据
c
是1当我感兴趣的a
和b
发生变化时。我想查找c
= 1的行,在此时获取a
和b
的值,再加上t他的值为前一行中的a
和b
,使用我的函数进行比较,并向数据框中添加一个显示比较结果的新系列。
对于上面的例子中,我所期望的操作将执行compare(['plums', 'grapes'], ['pears', 'grapes'])
和compare(['pears', 'grapes'], ['pears', 'bananas'])
,并添加系列[0, 0, 1, 0, 0]
到数据帧,即所期望的输出是一个数据框如下:
pd.DataFrame({
'a': ['apples', 'plums', 'pears', 'pears', 'pears'],
'b': ['grapes', 'grapes', 'grapes', 'grapes', 'bananas'],
'c': [0, 0, 1, 0, 1],
'd': [0, 0, 1, 0, 0]
})
请添加一个正在运行的示例和所需的输出。 – ppasler
嗨。期望的输出是一个零数组,其长度与数据帧长度相同,在这种情况下为[0,0,1,0,0],其中1为执行比较函数并返回1,否则为0 。对于给出的两个例子,我的'compare()'函数分别返回1和0。不幸的是,我不知道如何编写一个运行示例。 – user1684046
我的意思是可以从你的问题复制粘贴的代码,所以我可以在我的电脑上运行它(使用虚拟数据,导入和期望的输出作为注释)。 – ppasler