Qua*_*tia 2 python lambda if-statement time-series pandas
我正在尝试对存储在pandas系列对象中的一系列值应用过滤器.如果满足标准,则期望的输出是值本身,否则为零.我只能完成一半工作:
criterion = testdata.map(lambda x: x < 30 or x > 60)
testdata[criterion] =
Date
2015-01-05 62.358615
2015-01-06 64.349507
2015-01-13 61.726110
2015-01-14 63.574864
2015-01-15 66.020421
2015-01-16 63.041819
2015-01-20 61.458298
Name: rsi, dtype: float64
Run Code Online (Sandbox Code Playgroud)
哪里:
testdata =
Date
2014-12-29 45.821073
2014-12-30 48.946830
2014-12-31 57.737593
2015-01-02 55.424047
2015-01-05 62.358615
2015-01-06 64.349507
2015-01-07 59.452935
2015-01-08 51.182115
2015-01-09 55.044419
2015-01-12 59.365017
2015-01-13 61.726110
2015-01-14 63.574864
2015-01-15 66.020421
2015-01-16 63.041819
2015-01-20 61.458298
2015-01-21 54.432635
2015-01-22 46.985675
2015-01-23 49.740981
2015-01-26 45.102370
2015-01-27 49.800855
Name: rsi, dtype: float64
Run Code Online (Sandbox Code Playgroud)
但以下给出了我截然不同的结果.很明显,我不了解背景中发生的结果是什么:
criterion2 = testdata.map(lambda x: x if (x < 30 or x > 60) else 0)
testdata[criterion2]
Run Code Online (Sandbox Code Playgroud)
结果是:
rsi
0.000000 NaN
0.000000 NaN
0.000000 NaN
0.000000 NaN
62.358615 NaN
64.349507 NaN
0.000000 NaN
0.000000 NaN
0.000000 NaN
0.000000 NaN
61.726110 NaN
63.574864 NaN
66.020421 NaN
63.041819 NaN
61.458298 NaN
0.000000 NaN
0.000000 NaN
0.000000 NaN
0.000000 NaN
0.000000 NaN
Name: rsi, dtype: float64
Run Code Online (Sandbox Code Playgroud)
我正在寻找与第一个输出相同的格式,除了零不满足条件的地方.请帮忙.
您的
testdata.map(lambda x: x if (x < 30 or x > 60) else 0)
Run Code Online (Sandbox Code Playgroud)
已经返回了你想要的东西.
| 归档时间: |
|
| 查看次数: |
17359 次 |
| 最近记录: |