Python 无法将数据帧转换为2位小数
我是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的数据类型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
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"]