我只是想在从第1列(python index-0(开始的pandas数据帧中的数据的小数点后选择一定数量的数字(5位(,而不舍入
例如,我的熊猫看起来像这个
ids value1 value2 value3 value4
ex12 0.1345656 0.1345656 0.1345656 0.1345656
ex13 0.1345656 0.1345656 0.1345656 0.1345656
ex14 0.1345656 0.1345656 0.1345656 0.1345656
ex15 0.1345656 0.1345656 0.1345656 0.1345656
我想把它转换成这个新的数据帧:
ids value1 value2 value3 value4
ex12 0.13456 0.13456 0.13456 0.13456
ex13 0.13456 0.13456 0.13456 0.13456
ex14 0.13456 0.13456 0.13456 0.13456
ex15 0.13456 0.13456 0.13456 0.13456
因此,转换不应该触及第一列(id(,并且效果应该只在下一列之后发生。
以下是我在Python中的代码尝试:
import pandas as pd
data = [['ex12', 0.1345656, 0.1345656, 0.1345656 , 0.1345656],
['ex13', 0.1345656, 0.1345656, 0.1345656 , 0.1345656],
['ex14', 0.1345656, 0.1345656, 0.1345656 , 0.1345656],
['ex15', 0.1345656, 0.1345656, 0.1345656 , 0.1345656]
]
df
ids values1 value2 value3 value4
0 ex12 0.134566 0.134566 0.134566 0.134566
1 ex13 0.134566 0.134566 0.134566 0.134566
2 ex14 0.134566 0.134566 0.134566 0.134566
3 ex15 0.134566 0.134566 0.134566 0.134566
当我将其转换为字符串数据类型时,它不起作用,这样我就可以将它们作为字符串进行处理(切片(。然而,当我这样做时,结果转换是按行而不是按列的,并且该操作对其余列也不执行相同的操作。有办法在熊猫身上做到这一点吗?
df.apply(str).apply(lambda x: x[:12])
ids 0 ex12n1
values1 0 0.13456
value2 0 0.13456
value3 0 0.13456
value4 0 0.13456
dtype: object
事先非常感谢。
对于一列,您可以尝试此
(df.value1 * 1e5).astype(int) / 1e5
Out[193]:
0 0.13456
1 0.13456
2 0.13456
3 0.13456
Name: value1, dtype: float64
对于所有列,您可以使用apply
df.iloc[:,1:].apply(lambda x: (x * 1e5).astype(int) / 1e5)
Out[197]:
value1 value2 value3 value4
0 0.13456 0.13456 0.13456 0.13456
1 0.13456 0.13456 0.13456 0.13456
2 0.13456 0.13456 0.13456 0.13456
3 0.13456 0.13456 0.13456 0.13456
放回您的数据帧。使用update
df.update(df.iloc[:,1:].apply(lambda x: (x * 1e5).astype(int) / 1e5))
print(df)
Output:
ids value1 value2 value3 value4
0 ex12 0.13456 0.13456 0.13456 0.13456
1 ex13 0.13456 0.13456 0.13456 0.13456
2 ex14 0.13456 0.13456 0.13456 0.13456
3 ex15 0.13456 0.13456 0.13456 0.13456
如果要创建新的数据帧,请使用join
df_new = df.iloc[:,[0]].join(df.iloc[:,1:]
.apply(lambda x: (x * 1e5).astype(int) / 1e5))
Out[210]:
ids values1 value2 value3 value4
0 ex12 0.13456 0.13456 0.13456 0.13456
1 ex13 0.13456 0.13456 0.13456 0.13456
2 ex14 0.13456 0.13456 0.13456 0.13456
3 ex15 0.13456 0.13456 0.13456 0.13456