我有这样一个数据帧:https://github.com/thedatasleuth/New-York-Congressional-Districts/blob/master/newyork_total2.csv
我想创建一个名为“翻转”的专栏,跟踪“主导党”专栏中地区内政党的变化。例如,从2015年到2016年,19区从REP变为DEM,这就是我想要跟踪的“变化”。但是,我不想跟踪地区之间的更改—例如,我不关心地区1和地区2之间从REP到DEM的更改。到目前为止,我编写了以下代码:
for index, row in newyork_total2.iterrows():
newyork_total2['Flipped'] = newyork_total2['DOMINANT_PARTY'].ne(newyork_total2['DOMINANT_PARTY'].shift().bfill()).astype(int)
但正如你从我的“翻页”专栏中看到的,它并没有认识到地区内部的变化
您可以使用
groupby.transform
此函数用于计算序列中是否存在翻转
下面是一种使用} 和^{} 的方法:
lambda
和^{更新-解释
这里的
lambda
是函数的缩写函数采用
Series
—在本例中为['DOMINANT_PARTY']
让我们看看有“翻转”需要解释的地区(地区19):
这里我们应用函数的
x
是:而
x.shift()
是:函数} 方法(不相等)进行比较,后者是:
f
中的第一个逻辑表达式将这些序列与^{注意我们有2
True
个值,因为第一行-'REP'确实不等于NaN。 这就是为什么我们有第二个逻辑表达式来满足x.shift()
不等于NaN
(x.shift().notna()
)。&
运算符是逻辑AND语句,要求同时满足这两个条件相关问题 更多 >
编程相关推荐