2
私はPython 3.6.1を使用します。ここで私は値を操作したい私のデータフレームmyDFです:あなたが見ることができるようにPythonの条件に基づいてデータフレームの値を2レベルの列に置き換えるにはどうすればよいですか?
a b c
a X1 X2 X1 X2
0 10 . o o o
1 20 . o o o
2 30 . o o o
があります列「A」、「B」、レベル0の「C」、および列の「A」があり、 'X1'、 'X2'をレベル1に設定します。
X1の値がb2/cのX2の対応する値と等しいかどうかを比較する必要があります。したがって、上記のデータフレーム上の操作はこれを返す必要があります:
import numpy
import pandas
X1 = pandas.DataFrame(data=[[10,'.','o'],[20,'.','o'],[30,'.','o']],
columns=['a','b','c'])
X2 = pandas.DataFrame(data=[[10,'o','o'],[20,'o','o'],[30,'o','o']],
columns=['a','b','c'])
myDF = pandas.concat([X1.set_index('a'), X2.set_index('a')],
axis='columns', keys=['X1','X2'])
myDF = myDF.swaplevel(axis='columns')[X1.columns[1:]]
myDF = myDF.reset_index(col_level=1, col_fill='a')
私がこれまで試してみましたどのようなものです::
other = myDF.xs('X1', axis=1, level=-1)
main = numpy.where(myDF.eq(other, level=0), 'x', 'y')
pandas.DataFrame(main, index=myDF.index, columns=myDF.columns)
a b c
a X1 X2 X1 X2
0 10 . o
1 20 . o
2 30 . o
これはどのようにソースデータフレームを取得します
これは:
a b c
a X1 X2 X1 X2
0 F T F T T
1 F T F T T
2 F T F T T
そして前進する方法がわかりません...
良い解決策:-)決して前にパイプを見たことはありません:-) – Wen
ありがとうございます。 – piRSquared
本当にありがとうございます:)それはどのように動作するかを理解する必要があります。それでも、これが私の必要なものです。ちょうど発言:私は 'set_index(( '' a))'を使用するので、データフレームは期待どおりに見えます: –