Próbuję utworzyć wykres, który ma CompanyName + Całkowita liczba połączeń jako etykieta.
Używam bokeh z tym poleceniem
p.text(xr, yr, df.CompanyName + df.Total, angle=label_angle,
text_font_size="9pt", text_align="center", text_baseline="middle")
ale CompanyName jest str, a Total jest obiektem pływającym, więc sprawy się komplikują. Naprawiłem TypeError: cannot concatenate "str" and "float" objects
i udało się go wykreślić za pomocą
p.text(xr, yr, df.CompanyName + (map(str,df.Total)), angle=label_angle,
text_font_size="9pt", text_align="center", text_baseline="middle")
Jednak drukuje to CompanyName i liczbę dziesiętną. Próbowałem wszelkiego rodzaju wycinania tego miejsca po przecinku, często sugerując:
"{:.0f}".format(df.Total)
co daje mi to: ValueError: Unknown format code "f" for object of type "str"
Co do cholery, kiedy ja print df.Total
dostaję dtype: float64
Jeśli spróbuję floor(df.Total)
dostaję TypeError: cannot convert the series to <type "float">
Jestem zdezorientowany. Czy ktoś wie, co się tutaj dzieje?
Odpowiedzi:
1 dla odpowiedzi № 1Konwertuj liczbę zmiennoprzecinkową najpierw na int, a następnie na ciąg. Musisz użyć map
bo df.Total
jest iterowalny. Dlatego float(df.Total)
nie działa.
map(str,map(int, df.Total))
Następnie możesz połączyć go w rozmowie bokeh.
p.text(xr, yr, df.CompanyName + map(str,map(int, df.Total)),
angle=label_angle, text_font_size="9pt",
text_align="center", text_baseline="middle")