gpt4 book ai didi

python - 基于现有列向 Pandas DataFrame 添加多个列

转载 作者:行者123 更新时间:2023-12-05 07:04:18 24 4
gpt4 key购买 nike

如何用多列标记我的 x 轴?这是一个有效的示例:

df = pd.DataFrame({"player_name": ["Alan","Bob","Carl","Dan","Earl"],
"jersey_number": ['1','2','3','4','5'],
"hits" : [2,3,1,2,4],
"at_bats" : [7,6,8,7,8]
})
df["label"] = df["player_name"]+"-"+df["jersey_number"]
df.plot(x="label", y=["hits", "at_bats"])
plt.show()

但这有几个弱点。首先,创建 label 列的示例行很乏味。其次,字符串连接很挑剔。如果 jersey_number 不是字符串(例如整数),则连接失败。我可以编写一个子例程来获取列列表,将所有列转换为字符串,然后连接它们。这似乎是不必要的,应该有一些内置的方法来做到这一点,比如:

df = pd.DataFrame({"player_name": ["Alan","Bob","Carl","Dan","Earl"],
"jersey_number": ['1','2','3','4','5'],
"hits" : [2,3,1,2,4],
"at_bats" : [7,6,8,7,8]
})
df.plot(x=["player_name","jersey_number"], y=["hits", "at_bats"])
plt.show()

这行不通;它抛出 ValueError: x must be a label or position

我的 googlefu 不够强大,无法找到正确的语法。它存在吗?如果存在,它是什么?谢谢

最佳答案

一个选项是将这些列设置为索引然后绘制:

df.set_index(["player_name","jersey_number"]).plot( y=["hits", "at_bats"])

给出

enter image description here

虽然我更喜欢你的第一种方法,因为它提供了更好的表示:

df["label"] = df[["player_name","jersey_number"]].astype(str).agg('-'.join)

df['label'] = [f'{x}-{y}' for x,y in zip(df["player_name"],df["jersey_number"]) ]

关于python - 基于现有列向 Pandas DataFrame 添加多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62961232/

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