我将在前言中说这是一个玩具示例 - 我确实有这样做的动机,因为它处于其他一些链式操作的中间。
我有一个类似
的DataFramedf
Out[234]:
host1 host2 host3
dates
2014-02-02 1 3 4
2014-02-03 5 2 1
2014-02-04 2 5 6
2014-02-05 4 6 1
2014-02-06 3 2 1
我正在尝试生成一个由两列组成的新DataFrame,其中主机是索引 - 一列是最后一行中的值,第二列是最后一行中的值是否大于1.我的相应输出应该看起来像:
newdf
Out[235]:
dates 2014-02-06 passes
host1 3 True
host2 2 True
host3 1 False
如何使用链式操作执行此操作?
我认为完成输出本身很容易,我只是做了
newdf = df.tail(1).T
newdf['passes'] = newdf.iloc[:, 0] > 1
我正在努力使用链接操作进行操作的原因是因为只要我转换尾部,列名称就会变成类型pandas.tslib.Timestamp
,
df.tail(1).T
Out[236]:
dates 2014-02-06
host1 3
host2 2
host3 1
我似乎无法使用rename
访问重命名,因此我无法在assign
中的某个布尔操作中访问它以创建新的“pass”列。
数据:
我的玩具DataFrame可以用
生成df = pd.DataFrame(dict(dates=pd.date_range('2014-02-02', periods=5),
host1=[1, 5, 2, 4, 3],
host2=[3, 2, 5, 6, 2],
host3=[4, 1, 6, 1, 1])).set_index('dates')
答案 0 :(得分:10)
您可以在lambda
中使用assign
表达式,其中参数是先前链式操作的结果:
df.tail(1).T.assign(passes = lambda x: x.iloc[:,0] > 1)
#dates 2014-02-06 00:00:00 passes
#host1 3 True
#host2 2 True
#host3 1 False
答案 1 :(得分:7)
你可以试试这个:
if(values == ''){
$('#myModal').css('cursor','auto');
$('#myModal').show();
}
答案 2 :(得分:4)
我想对Psidom解决方案发表评论而不发布新的解决方案(但由于声誉不足而无法发表评论)。这个也适用
df.tail(1).T.assign(passes = lambda x: x.gt(1))