データ型が混在したDataFrameがあります。一部の列名は文字列であり、一部はタプルです。 列名の型を変更せずに列の順序を変更する方法はありますか?パンダ並べ替えるタプルと文字列が混在したDataFrame列
すべての列が文字列である場合、例えば、これは正常に動作します:
df = pd.DataFrame([["Alice", 34],
["Bob", 55]])
df.columns = ["name", "age"]
df[["age", "name"]]
# Out:
age name
0 34 Alice
1 55 Bob
すべての列がタプルであれば、これも問題なく動作します。しかし
df = pd.DataFrame([[5, 30],
[6, 31]])
df.columns = [(0,0), (1,1)]
df[[(1,1), (0,0)]]
# Out[15]:
(1, 1) (0, 0)
0 30 5
1 31 6
、列がある場合文字列とタプルが混在すると、エラーが発生します。
df = pd.DataFrame([["Alice", 0, 34],
["Bob", 1, 55]])
df.columns = ["name", (0,0), "age"]
df[["age", "name", (0,0)]]
# Out:
ValueError: setting an array element with a sequence
私はおそらく当時の変換、文字列、またはタプルの文字列に列のタプルを変換することによってこの問題を解決することができます。 しかし、私は本当にこのエラーの原因を知りたいと思っていますし、それをよりエレガントな方法で回避する方法があるかどうかを知りたいと思っています。
エラーは、データフレームの列を設定するときに使用されるコンストラクタ「np.array」に由来します。一致しないデータ型(文字列とタプル)を 'np.array'に渡しています。これは配列に関しては一貫していません。 – Abdou