我有一個混合列名類型的DataFrame:一些列名是字符串,一些是元組。 有沒有辦法重新排列列而不更改列名的類型?重新排列具有混合元組和字符串列的pandas 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