gpt4 book ai didi

python - 多个数据帧上的 Pandas 元素条件操作

转载 作者:太空宇宙 更新时间:2023-11-03 14:51:04 24 4
gpt4 key购买 nike

我想基于对具有相同结构(相同索引、相同列)的多个数据帧的条件操作(按元素)的组合创建一个数据帧。

在这里,我创建了三个具有相似结构的数据框。

df1 = pd.DataFrame(np.random.rand(5,3), columns=['a','b','c'],index = pd.date_range(start='2000.01.01', periods=5, freq='D'))
df2 = pd.DataFrame(np.random.rand(5,3), columns=['a','b','c'],index = pd.date_range(start='2000.01.01', periods=5, freq='D'))
df3 = pd.DataFrame(np.random.rand(5,3), columns=['a','b','c'],index = pd.date_range(start='2000.01.01', periods=5, freq='D'))

df1
a b c
2000-01-01 0.457567 0.157506 0.185594
2000-01-02 0.709991 0.486635 0.839173
2000-01-03 0.503184 0.640214 0.895055
2000-01-04 0.940231 0.591708 0.019716
2000-01-05 0.246132 0.596872 0.437000

df2
a b c
2000-01-01 0.722588 0.696100 0.176172
2000-01-02 0.275177 0.162525 0.347674
2000-01-03 0.248735 0.887237 0.175126
2000-01-04 0.444136 0.337881 0.830616
2000-01-05 0.526365 0.803296 0.574811

df3
a b c
2000-01-01 0.392965 0.107987 0.139133
2000-01-02 0.751523 0.658844 0.174854
2000-01-03 0.509276 0.380294 0.406262
2000-01-04 0.669822 0.079491 0.233737
2000-01-05 0.659077 0.094545 0.826730

这是我的伪代码:

df4 = if (df1 > 0.5 and df2 <0.3 and df3 > 0.6, 1, 0)

最简单高效的代码是什么?

最佳答案

Pandas

(df1.gt(.5) & df2.lt(.3) & df3.gt(.6)).astype(int)

a b c
2000-01-01 0 0 0
2000-01-02 1 0 0
2000-01-03 0 0 0
2000-01-04 0 0 0
2000-01-05 0 0 0

带有一些 numpy v1

pd.DataFrame(
(
(df1.values > .5) &
(df2.values < .3) &
(df3.values > .6)
).astype(int),
df1.index, df1.columns
)

a b c
2000-01-01 0 0 0
2000-01-02 1 0 0
2000-01-03 0 0 0
2000-01-04 0 0 0
2000-01-05 0 0 0

带有一些 numpy v2

pd.DataFrame(
np.where(
(df1.values > .5) &
(df2.values < .3) &
(df3.values > .6), 1, 0
),
df1.index, df1.columns
)

a b c
2000-01-01 0 0 0
2000-01-02 1 0 0
2000-01-03 0 0 0
2000-01-04 0 0 0
2000-01-05 0 0 0

关于python - 多个数据帧上的 Pandas 元素条件操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45789268/

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