Python 基于现有列向DataFrame添加多个列

Python 基于现有列向DataFrame添加多个列,python,pandas,matplotlib,Python,Pandas,Matplotlib,如何使用多列标记x轴?下面是一个有效的示例: df = pd.DataFrame({"player_name": ["Alan","Bob","Carl","Dan","Earl"], "jersey_number": ['1','2','3','4','5'], "hit

如何使用多列标记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()
但这有几个缺点。首先,创建标签列的示例行非常繁琐。其次,字符串concat很挑剔。如果jersey_数字不是字符串(例如ints),则concat失败。我可以编写一个子程序来获取列列表,将所有列转换为字符串,并对它们进行concat。但这似乎是不必要的,应该有一些内置的方法来做到这一点,比如:

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()
这不管用;它抛出值错误:x必须是标签或位置


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

一个选项是将这些列设置为索引,然后打印:

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

尽管我更喜欢您的第一种方法,因为它提供了更好的代表性:

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"]) ]