我一直在操作一些 Dataframe ,但不幸的是,我有两个百分比列,一个格式为'61.72',另一个格式为'0.62'。我只想用“61.72”格式的百分比列除以100,然后将其四舍五入为2.dp,以便与数据框一致。有什么简单的方法吗?我的数据框有两列,一列叫做“A”,另一列叫做“B”,我想格式化“B”。
bksxznpy1#
您可以将div与round一起使用:
div
round
df = pd.DataFrame({'A':[61.75, 10.25], 'B':[0.62, 0.45]}) print (df) A B 0 61.75 0.62 1 10.25 0.45 df['A'] = df['A'].div(100).round(2) #same as #df['A'] = (df['A'] / 100).round(2) print (df) A B 0 0.62 0.62 1 0.10 0.45
3htmauhk2#
这个问题已经得到了回答,但这里有另一个解决方案,它是显着更快和标准之一。
df = pd.DataFrame({'x':[10, 3.50], 'y':[30.1, 50.8]}) print (df) >> x y 0 10.0 30.1 1 3.5 50.8 df = df.loc[:].div(100).round(2) print (df) >> x y 0 0.10 0.30 1 0.03 0.50
为什么更喜欢这个解决方案??好吧,这个警告就足够了-“如果您使用df ['A'],则试图在DataFrame的切片副本上设置值,因此,请尝试使用.loc[row_indexer,col_indexer] = value。此外,请检查此以了解更多信息https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
2条答案
按热度按时间bksxznpy1#
您可以将
div
与round
一起使用:3htmauhk2#
这个问题已经得到了回答,但这里有另一个解决方案,它是显着更快和标准之一。
为什么更喜欢这个解决方案??
好吧,这个警告就足够了-“如果您使用df ['A'],则试图在DataFrame的切片副本上设置值,因此,请尝试使用.loc[row_indexer,col_indexer] = value。
此外,请检查此以了解更多信息https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy