私はこれについて多くの質問を読みましたが、それらの解決策を自分の問題に適用する方法を理解できませんでした。使用するdf.apply
必要df.assign
があると思いますが、ドキュメントを読んだ後でもその方法がわかりません
これは私のデータです:
d = {'switchopen': [True, True, False, False, False, False, False, False, False, False, False, False, False, True, True, False, False, True ],
'switchclose': [ False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, False, False, False]}
df = pd.DataFrame(data=d)
開いているとき switchopen == True & switchclose == False
閉まっているとき switchopen == False & switchclose == True
動いているとき switchopen == False & switchclose == False
私の現在の解決策はこれです:
dfopen = df[(df.switchclose == False) & (df.switchopen == True)]
dfopen['Open'] = 'open'
dfclose = df[(df.switchclose == True) & (df.switchopen == False)]
dfclose['Moving'] = 'close'
dfmoving = df[(df.switchclose == False) & (df.switchopen == False)]
dfmoving['Close'] = 'moving'
dfs = [dfopen, dfclose, dfmoving]
dfz = pd.concat(dfs, sort= False)
dfz = dfz.sort_index(ascending=True)
dfz['Position'] = dfz['Position'].fillna(dfz['Open'])
dfz['Position'] = dfz['Position'].fillna(dfz['Close'])
print(dfz['Position'])
それは私が欲しいものを私に与えますが、私は次のようなより良い解決策を探しています:
df['Close'] = (df.switchclose == True & df.switchopen == False)
df['Open'] = (df.switchclose == False & df.switchopen == False)
df['Moving'] = (df.switchclose == False & df.switchopen == False)
そして、を使用し.fillna
ます。
そのステップが必要でさえない解決策があればそれは最善でしょう
期待される出力は次のとおりです。
Position
0 open
1 open
2 moving
3 moving
4 moving
5 close
6 close
7 close
8 close
9 close
10 moving
11 moving
12 moving
13 open
14 open
15 moving
16 moving
17 open
論理的な要件と出力の期待を考慮すると、これは機能するはずです
df.loc[(df['switchopen'] == True) & (df['switchclose'] == False), 'Position'] = 'open'
df.loc[(df['switchopen'] == False) & (df['switchclose'] == True), 'Position'] = 'closed'
df.loc[(df['switchopen'] == False) & (df['switchclose'] == False), 'Position'] = 'moving'
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加