gpt4 book ai didi

python - 使用混合元组和字符串列重新排序 pandas DataFrame 列

转载 作者:太空宇宙 更新时间:2023-11-04 05:03:12 25 4
gpt4 key购买 nike

我有一个包含混合列名类型的 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

我可能可以通过将列中的元组转换为字符串,或将字符串转换为元组,然后再转换回来来解决这个问题。但是,我真正想知道是什么导致了这个错误,以及是否有办法以更优雅的方式解决它。

最佳答案

df[np.array(["age", "name", (0,0)],dtype=object)] 有效。

正如您所指出的,Python 正在提示,因为包含列名的数组同时具有元组和字符串值。但是使用 dtype=object 规范显式创建一个数组会告诉该数组保存任意对象而不是提示。如果跳过 dtype 参数,则会推断出 dtype,Python 会假定 dtype 对于整个数组都是相同的,从而导致错误。

关于python - 使用混合元组和字符串列重新排序 pandas DataFrame 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45175041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com