gpt4 book ai didi

python - 如何访问我无法在链式操作中访问其名称的列

转载 作者:太空狗 更新时间:2023-10-29 20:37:00 26 4
gpt4 key购买 nike

我会先说这是一个玩具示例 - 我确实有这样做的动机,因为它位于其他一些链式操作的中间。

我有一个类似于

的 DataFrame
df
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 中的某些 bool 操作中访问它以创建新的“通过”栏目。

数据:

我的玩具 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')

最佳答案

您可以在assign中使用lambda表达式,其中参数是之前链式操作的结果:

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

关于python - 如何访问我无法在链式操作中访问其名称的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42567701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com