Python 无法将数据帧转换为2位小数

Python 无法将数据帧转换为2位小数,python,pandas,Python,Pandas,我是Python编程新手。目前,我试图制作一个图表,能够在条形图顶部显示小数点后2位的百分比 df_调查是我使用熊猫库制作的数据框架。(我试图将datafame df_survey_sort复制到df_survey_pct中,但当我在df_survey_pct中进行更改时,df_survey_sort也会更改…有人能向我解释为什么会发生这种情况。因此,我执行以下操作以使df_survey_sort和df_survey_pct不会相互过度疲劳) 这是df_survey_pct的数据类型 Very

我是Python编程新手。目前,我试图制作一个图表,能够在条形图顶部显示小数点后2位的百分比

df_调查是我使用熊猫库制作的数据框架。(我试图将datafame df_survey_sort复制到df_survey_pct中,但当我在df_survey_pct中进行更改时,df_survey_sort也会更改…有人能向我解释为什么会发生这种情况。因此,我执行以下操作以使df_survey_sort和df_survey_pct不会相互过度疲劳)

这是df_survey_pct的数据类型

Very interested        int64
Somewhat interested    int64
Not interested         int64
dtype: object
当我执行
print(df\u survey\u pct)
时,每个单元格的值不在小数点后

我甚至尝试了
df\u survey\u pct=df\u survey\u pct.round(2)
df\u survey\u pct=df\u survey\u pct.astype('float')
但是值仍然是整数


因此,我只能在条形图中显示整数百分比。

以下是如何将np.float64列转换为小数点后2位的方法

df_survey["some_column_with_too_many_decimal"] = df_survey["some_column_with_too_many_decimal"].apply(lambda x: int(x*100)/100)
另外,如果您需要选择该列中的某些行,请在每一行上使用
df.loc
而不是iloc,因为df可能有太多行

df.loc[(df["column1"]>0), ["column2", "column3"]]

loc的第一个参数是要筛选的条件列表,第二个参数是要选择的列,然后您可以使用上面显示的apply更新它们


如果您想使用舍入,您可以舍入值,然后乘以100,转换为int,再除以100,使其成为小数点后2位。由于数据帧中存储值的方式不同,舍入函数不会将其限制为2位小数。

您可以直接使用
df.round(2)

您是否可以共享列的数据类型[“非常感兴趣”、“有点感兴趣”和“不感兴趣”]以及您是否只在for循环中按顺序循环3行?这不是很好的性能。是否共享一些示例输入和所需的输出?可能重复:@devssh我的循环如何不性能?因为for循环没有并行化,dataframe[“column”]给出一个pd.Series,而pd.Series.apply在向量化时是并行的。为什么要进行向下投票?这不是你问题的标题吗?我使用了我问题中描述的方法
df.loc[(df["column1"]>0), ["column2", "column3"]]
df.loc[(df["column1"]>0), "column2", "column3"]