我有熊猫DataFrame如下:
col1 | number
--------------------
acb_sum | 500.000
deff | 0.509
ghi | 0.342
In my table "col1"是索引,我只需要在索引以"_sum"结尾的列中使用四舍五入值。
因此,我需要像下面这样:
col1 | number
--------------------
acb_sum | 500
deff | 0.509
ghi | 0.342
因为只有在第一行索引("col1")以"_sum"结尾我们在点后面把值四舍五入到0
如何在Python Pandas中实现?
您可以使用布尔索引(但数字现在是str
):
mask = df.index.str.endswith("_sum")
df.loc[mask, "number"] = df.loc[mask, "number"].apply(lambda x: str(round(x)))
print(df)
打印:
number
col1
acb_sum 500
deff 0.509
ghi 0.342
EDIT:更改选定的列:
cols_to_change = ["number1", "number2", "number3"]
mask = df.index.str.endswith("_sum")
df.loc[mask, cols_to_change] = df.loc[mask, cols_to_change].apply(
lambda x: [str(round(v)) for v in x]
)
print(df)
打印:
number1 number2 xxx number3
col1
acb_sum 500 400 111.3 200
deff 0.509 401.0 112.3 201.0
ghi 0.342 402.0 113.3 202.0
df
used:
number1 number2 xxx number3
col1
acb_sum 500.000 400.0 111.3 200.0
deff 0.509 401.0 112.3 201.0
ghi 0.342 402.0 113.3 202.0