С pandas вы можете перебирать сгруппированные значения, поэтому я предлагаю вам перебрать поднаборы данных и построить каждый с меткой, затем вызвать plt.legend()
.
Вот код, который я не полностью протестировал, поэтому используйте состорожно, и, возможно, в следующий раз подумайте о том, чтобы дать пригодный образец набора данных, это проще!
for subject, sub_df in testdf.groupby(by='subject'):
plt.plot(sub_df['Visit Number'], sub_df['dB'], label=subject)
plt.legend()