Python 添加小数位
如何循环遍历此数据帧,并为大于200的值从右侧添加两位小数。例如,999大于200,因此将其设为9.99 如果要在所有列中应用: 如果您想申请一个系列,请使用: 示例Python 添加小数位,python,pandas,Python,Pandas,如何循环遍历此数据帧,并为大于200的值从右侧添加两位小数。例如,999大于200,因此将其设为9.99 如果要在所有列中应用: 如果您想申请一个系列,请使用: 示例 df['col1']= df['col1'].mask(df['col1'].ge(200),df['col1'].div(100)) 另一种选择 或 样本df的输出 df = pd.DataFrame(np.where(df.ge(200),df.div(100),df), columns
df['col1']= df['col1'].mask(df['col1'].ge(200),df['col1'].div(100))
另一种选择
或
样本df的输出
df = pd.DataFrame(np.where(df.ge(200),df.div(100),df),
columns = df.columns,index = df.index)
将applymap()
与条件lambda
函数一起使用,如果单元格值大于200,该函数将除以100
col1
0 9.99
1 10.00
输出:
import pandas as pd
d = {'col1': [999, 1000, 100]}
df = pd.DataFrame(data=d)
df = df.applymap(lambda x: x/100 if x >= 200 else x)
print(df)
那么
999
是否会变成9.99
?您期望的输出是什么?刚刚编辑了最后一部分抱歉,只有大于某个特定值时,它才会在整个数据帧中迭代并添加这些小数。为什么要在此处应用map?@ansev因为如果他向其中添加更多列,您的上述函数将无法工作applymap()
应用于数据帧的每个元素。此外,np。其中
在pandas数据帧上调用本机numpy
函数,以便您将类型转换回np.matrix
,以便能够使用它。如果可以,则应使用本机函数。有关更多列,请参见same@ansev不,您需要像上面那样指定列。这太冗长了,为什么不直接使用applymap对每一列执行此操作呢。
df=df.where(df.lt(200),df.div(100))
#df['col1']=df['col1'].where(df['col1'].lt(200),df['col1'].div(100))
df = pd.DataFrame(np.where(df.ge(200),df.div(100),df),
columns = df.columns,index = df.index)
col1
0 9.99
1 10.00
import pandas as pd
d = {'col1': [999, 1000, 100]}
df = pd.DataFrame(data=d)
df = df.applymap(lambda x: x/100 if x >= 200 else x)
print(df)
col1
0 9.99
1 10.00
2 100.00