2
私はこのようなデータフレームを持っている:変換パンダのデータフレームは
a b c
foo 1 6 9
bar 2 4 8
fud 3 5 7
そして、私はこれにそれを変換したい:
a b c
name num name num name num
0 foo 1 bar 4 fud 7
1 bar 2 fud 5 bar 8
2 fud 3 foo 6 foo 9
すなわちグループに各列を名前として数字と数字のペアであり、数字はインデックスであった対応する名前でソートされています。
私はループで行うことができますが、私はそれを行うためのより「パンダシス」な方法がなければならないと考え続けています。これは私が上記のために使用されるコードです:
import pandas as pd
my_index=['foo','bar','fud']
orig = pd.DataFrame({'a': [1,2,3], 'b':[6,4,5], 'c':[9,8,7]}, index=my_index)
multi = pd.MultiIndex.from_product([['a','b','c'],['name','num']])
x = pd.DataFrame(index=range(3), columns=multi)
for h in orig.columns:
s = orig[h].sort_values().reset_index()
x[h,'name'] = s['index']
x[h,'num'] = s[h]
私も、これを行うには良い方法があります確信しているので、パンダの専門家が私を助けることができれば、それははるかに高く評価されるだろう。
ありがとうございます!
ああ、それは私に噛むためにいくつかのことを示します。最初のものは非常に簡潔ですが、それでも列をループします。もう1つはそれを避けます。ありがとう! – OldGeeksGuide