pandas 列具有dtype对象,无法将方法'nlargest'用于此dtype

6psbrbz9  于 2023-01-24  发布在  其他
关注(0)|答案(2)|浏览(927)

我用的是Google Colab,想用Pandas分析Google电子表格的一个文件,导入成功,可以用pd.DataFrame打印出来

data_tablet = gc.open_by_url(f'https://docs.google.com/spreadsheets/d/{sheet_id}/edit#gid={tablet_gid}')

tablet_var = data_tablet.worksheet('tablet')
tablet_data = tablet_var.get_all_records()

df_tablet = pd.DataFrame(tablet_data)
print(df_tablet)
name  1st quarter  ...  4th quarter     total
0      Albendazol 400 mg         18.0  ...         60.0        78
1      Alopurinol 100 mg        125.0  ...        821.0       946
2        Ambroksol 30 mg        437.0  ...        798.0  1,235.00
3      Aminofilin 200 mg         70.0  ...        522.0       592
4    Amitriptilin 25 mg          83.0  ...        178.0       261
..                   ...          ...  ...          ...       ...
189   Levoflaksin 250 mg        611.0  ...        822.0  1,433.00
190            Linezolid        675.0  ...        315.0       990
191  Moxifloxacin 400 mg        964.0  ...         99.0  1,063.00
192  Pyrazinamide 500 mg        395.0  ...        189.0       584
193          Vitamin B 6        330.0  ...        825.0  1,155.00

[194 rows x 6 columns]

我想从total的194个项目中选择前10个,但没有成功。

  • total中选择前10名并运行下面的命令,得到cannot use method 'nlargest' with this dtype

一个二个一个一个

  • 但是当我从1st quarter中选择它时,它工作得很好
df_tablet_top10 = df_tablet.nlargest(10, '1st quarter')
print(df_tablet_top10)
nama  1st quarter  ...  4th quarter     total
154             Salbutamol 4 mg        981.0  ...         23.0  1,004.00
74   MDT FB dewasa (obat kusta)        978.0  ...        910.0  1,888.00
155   Paracetamol 500 mg Tablet        976.0  ...        503.0  1,479.00
33              Furosemid 40 mg        975.0  ...        524.0  1,499.00
23          Deksametason 0,5 mg        972.0  ...        793.0  1,765.00
21    Bisakodil (dulkolax) 5 mg        970.0  ...        798.0  1,768.00
191         Moxifloxacin 400 mg        964.0  ...         99.0  1,063.00
85          Metronidazol 250 mg        958.0  ...        879.0  1,837.00
96          Nistatin 500.000 IU        951.0  ...        425.0  1,376.00
37             Glimepirid 2 mg         947.0  ...        890.0  1,837.00

[10 rows x 6 columns]

你知道是什么原因吗?
此外,我已经改变了格式的1st quartertotal作为number在谷歌表,它仍然没有工作

kninwzqo

kninwzqo1#

我找到了答案,但没有找到解释。
我所做的只是将total列转换为float

df_tablet['total'] = df_tablet['total'].astype(float)
yqkkidmi

yqkkidmi2#

df_tablet['total'] = df_tablet['total'].astype(float)
df_tablet_top10 = df_tablet.nlargest(10, '1st quarter')
print(df_tablet_top10)

相关问题