python - pandas:具有不同索引的条件

标签 python pandas

好像语句和循环对于 pandas 来说非常慢且难以计算,我正在尝试思考如何重写我想要建立的条件。

df = pandas.DataFrame()
df['x'] = [1.2, 1.5, 1.7, 1.9]
df['y'] = [1.7, 1.8, 0.7, 1.4]
print(df)

     x    y
0  1.2  1.7
1  1.5  1.8
2  1.7  0.7
3  1.9  7.0

我想做的是创建一个条件来验证是否 df.y将永远小于df.x如果这是真的,则创建一个新列并减去两个索引。

例如,

df.y[0] < df.x[0]如果没有,

然后检查if df.y[0] < df.x[1]如果这是真的那么df.new[0] = 1 - 0;

并移至下一个值:df.y[1] < df.x[1]

如果没有,则检查if df.y[1] < df.x[2]如果这是真的那么df.new[1] = 2 - 1 .

如果 df.y[i] 的值总是大于任何 df.x[n]值,然后附加为 Falsedf.new[i] .

这种情况下的输出应该是这样的

     x    y    new
0  1.2  1.7      3
1  1.5  1.8      2
2  1.7  0.7      0
3  1.9  7.0  False

其中df.newdf.x 的索引之间的差异索引为df.y我们试图证明是否会低于 df.x

df.new 可以表示无论索引是什么,如果索引是时间 df.new 表示 df.y 中的第一次将低于 df.x .

最佳答案

以下内容有效,但这实际上是一个循环,因为它使用 apply:

In [225]:
def func(x):
    if (x['y'] > df['x']).all():
        return False
    else:
        return (x['y'] > df['x']).idxmin()
df['new'] = df.apply(lambda row: func(row), axis=1)
df

Out[225]:
     x    y    new
0  1.2  1.7      2
1  1.5  1.8      3
2  1.7  0.7      0
3  1.9  7.0  False

关于python - pandas:具有不同索引的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31164293/

相关文章:

python - 将每个 Pandas Dataframe 行绘制为单独的图

python - Pandas:选择多个字符串多次出现的行

python - 在Python中查找与数据框元素列表相对应的索引列表

python - 随着时间的推移处理微 Controller 数据

Python追加: It only return the last value repeatedly

python - 有没有使用元素树从 xml 文件创建多个数据框的方法?

python - 如何让 tkinter 窗口在几秒钟延迟后自动关闭?

Python NumPy : reshape is deprecated

python - 对于数据帧列中的每个值,我想需要在另一列( Pandas )上创建值

Python Pandas 根据日期条件写入两个不同的文件