1
this questionへの完全で正確な応答に基づいて、私はわずかに異なるデータに基づいて新しい問題に直面しています。変更次いで他の列パート2の値に基づく値からのパンダのマルチインデックス減算
df = pd.DataFrame({
('A', 'a'): [23,3,54,7,32,76],
('B', 'b'): [23,'n/a',54,7,32,76],
('possible','possible'):[100,100,100,100,100,100]
})
df
A B possible
a b possible
0 23 23 100
1 3 n/a 100
2 54 54 100
3 7 n/a 100
4 32 32 100
5 76 76 100
Iの値が「N/A」は、その行の任意のインスタンス(カラム)のために、行ごとに、「可能」から4を減算したい(と: は、このデータフレームを与えられますすべての 'n/a'値を0にする)。
A B possible
a b possible
0 23 23 100
1 3 n/a 96
2 54 54 100
3 7 n/a 96
4 32 32 100
5 76 76 100
いくつかの条件: (彼らは検査の際に、整数のように見えるが)列は、すべての浮動小数点数であることを発生することがあります。これは最初の質問には含まれていませんでした。
「n/a」値の2つのインスタンス(列)が行に含まれることもあります。これは以前の解決策によって解決されました。
idx = pd.IndexSlice
df.loc[:, idx['possible', 'possible']] -= (df.loc[:, idx[('A','B'),:]] == 'n/a').sum(axis=1) * 4
df.replace({'n/a':0}, inplace=True)
これはカラム(AまたはB)は、すべての浮動小数点数(一見整数)を含有する場合を除いて、動作:
ここ以前のソリューションです。それが事実だときに、このエラーが発生します。
TypeError: Could not compare ['n/a'] with block values
私は8分で受け入れることができます。これは完璧です。 –
ありがとう、幸運! – jezrael