【发布时间】:2017-01-16 18:12:12
【问题描述】:
我有以下形式的纵向数据
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 在我感兴趣的a 和b 发生变化时为1。我想找到c = 1 的行,获取a 和b 的值此时,加上上一行中a 和b 的值,使用我的函数比较它们,并将一个新系列添加到显示比较结果的数据框中。
对于上面的示例,我想要的操作将执行 compare(['plums', 'grapes'], ['pears', 'grapes']) 和 compare(['pears', 'grapes'], ['pears', 'bananas']) 并将 Series [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]
})
【问题讨论】:
-
请添加一个运行示例和所需的输出。
-
嗨。所需的输出是与数据帧长度相同的 0 和 1 数组,在本例中为
[0, 0, 1, 0, 0],在执行比较函数并返回 1 时为 1,否则为 0。对于给出的两个示例,我的compare()函数分别返回 1 和 0。不幸的是,我不知道如何为其余部分编写一个运行示例。 -
我的意思是可以从你的问题中复制粘贴的代码,这样我就可以在我的电脑上运行它(使用虚拟数据、导入和所需的输出作为注释)。
-
我已经添加了导入语句和所需的输出。
df是虚拟数据。如果我遗漏了其他内容,请告诉我。 -
你快到了 :) 我想要一个块,我可以在我的 IDE 中复制并简单地运行它。