回答編集履歴
2
追記
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
のであれば`df[df["power"] == df["power"].max()*0.5]`で抽出できます。
|
4
4
|
ただし厳密に値が一致する行がない可能性もあるので、差の絶対値をとってその最小値と一致する行を抽出するのがよいかと思います。
|
5
|
-
あるいは50%以上となる行を`idxmax`で探すのが単純でよいかもしれません。
|
5
|
+
あるいは、`power`が単調増加するのであれば、50%以上となる行を`idxmax`で探すのが単純でよいかもしれません。
|
6
6
|
```Python
|
7
7
|
import pandas as pd
|
8
8
|
|
1
追記
test
CHANGED
@@ -2,21 +2,30 @@
|
|
2
2
|
|
3
3
|
のであれば`df[df["power"] == df["power"].max()*0.5]`で抽出できます。
|
4
4
|
ただし厳密に値が一致する行がない可能性もあるので、差の絶対値をとってその最小値と一致する行を抽出するのがよいかと思います。
|
5
|
+
あるいは50%以上となる行を`idxmax`で探すのが単純でよいかもしれません。
|
5
6
|
```Python
|
6
7
|
import pandas as pd
|
7
8
|
|
9
|
+
vals = [i for i in range(21)]
|
8
|
-
df = pd.DataFrame({'power':
|
10
|
+
df = pd.DataFrame({'flame':vals, 'power':vals})
|
9
11
|
ret = df[df['power'] == df['power'].max()*0.5]
|
10
12
|
print(ret)
|
11
|
-
# power
|
13
|
+
# flame power
|
12
|
-
#10 10
|
14
|
+
#10 10 10
|
13
15
|
|
16
|
+
vals = [i for i in range(20)]
|
14
|
-
df = pd.DataFrame({'power':
|
17
|
+
df = pd.DataFrame({'flame':vals, 'power':vals})
|
15
18
|
dist = (df['power'] - df['power'].max()*0.5).abs()
|
16
19
|
ret = df[dist == dist.min()]
|
17
20
|
print(ret)
|
18
|
-
# power
|
21
|
+
# flame power
|
19
|
-
#9 9
|
22
|
+
#9 9 9
|
23
|
+
#10 10 10
|
24
|
+
|
25
|
+
ret = (df['power'] >= df['power'].max()*0.5).idxmax()
|
26
|
+
ret = df.iloc[ret]
|
27
|
+
print(ret)
|
20
|
-
#
|
28
|
+
#flame 10
|
29
|
+
#power 10
|
30
|
+
#Name: 10, dtype: int64
|
21
31
|
```
|
22
|
-
|