gpt4 book ai didi

python - 根据另一列中的值减去选择一列中的值

转载 作者:行者123 更新时间:2023-12-01 08:49:09 24 4
gpt4 key购买 nike

我有一个包含 4 列的数据框。我想从 col2 的第二个到最后一个条目减去 col2 的最后一个条目,并查看从第二个到最后一个条目减去最后一个条目是否大于 10。如果是,我想获取第一列中最后一个和倒数第二个的相应值,并将第一列中倒数第二个的值替换为 NaN,并创建另一个数据帧作为输出。有什么办法可以在 pandas 中做到这一点吗?

col1  col2   col3   col4
e 21 1 2
m 20 1 2
k 9 1 2
j 20 1 2

输出:

col1         col3   col4
[j, 'NaN'] 1 2

我正在寻找基于查询的方法,以便通过应用groupby过滤使以数据帧格式输出变得更容易。

到目前为止我已经尝试过的代码,但是它似乎不起作用。

last = df.iloc[-1]['col2']
second_to_last = df.iloc[-2]['col2']

difference = df.query("{ref} - {ref_1} > 10".format(ref=last, ref_1= second_to_last))

我在第 3 行遇到的错误:

ValueError: multi-line expressions are only valid in the context of data

最佳答案

您可以使用:

#get last and previous index values
last = df.index[-1]
second_to_last = df.index[-2]

#boolena mask - scalar
m1 = df.loc[last, 'col2'] - df.loc[second_to_last, 'col2'] > 10
#boolean mask - array
m2 = (df.index.isin([last, second_to_last]))
#chain together
m = m1 & m2
print (m)
[False False True True]

#filter
df1 = df[m]
print (df1)
col1 col2 col3 col4
2 k 9 1 2
3 j 20 1 2

#get last row, remove unnecessary column
df2 = df1.iloc[[-1]].drop('col2', axis=1)
#convert value to lsit and add missing value
df2['col1'] = df2['col1'].apply(lambda x: list(x) + [np.nan])
print (df2)
col1 col3 col4
3 [j, nan] 1 2

关于python - 根据另一列中的值减去选择一列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53202406/

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