【发布时间】:2018-09-27 00:10:23
【问题描述】:
我创建了一个具有一系列特征的数据框。我想创建一个新列来选择两个特定行之间的所有行(这将是输入)。
说dataframe如下:
data = {'currency': ['Euro', 'Euro', 'Euro', 'Dollar', 'Dollar', 'Yen',
'Yen', 'Yen', 'Pound', 'Pound', 'Pound, 'Pesos',
'Pesos'],
'cost': [34, 67, 32, 29, 48, 123, 23, 45, 78, 86, 23, 45, 67]}
df = pd.DataFrame(data, columns = ['currency', 'cost'])
df
df 表:
我想添加一个在满足条件时分配 1 的新列。就我而言,条件是两种特定货币之间的所有行。例如,假设我想要“美元”和“英镑”之间的所有货币。我的猜测是我必须创建一个掩码并将其用作条件,即选择第一个“美元”行和最后一个“英镑”行之间的所有行(即第 3-10 行)。
我在创建该掩码时遇到了问题,因为货币是按字母顺序选择的:
mask = (df['currency'] >= 'Dollar') & (df['currency'] <= 'Pound')
上面创建了一个新列,其中包含所有货币的 T,但“日元”除外。我可以看到为什么上述方法失败了,但想不出一种方法来做我想做的事。
注意:相同的货币名称将分组出现,例如“磅”不能在第 4-5 行和第 8-10 行中。
【问题讨论】:
-
能否请您添加预期的输出。
-
很好的问题。只是对您的快速和理解反应表示一点赞赏!
标签: python pandas conditional-statements