首页 > 解决方案 > 如何操纵每个索引中的值?

问题描述

我有一列数字。它有大约 60000 个索引。一些索引的值如 1.000 或 5.0 或 2323.0000 或 1.446 这些索引的正确值是 1、5、2323、1446。换句话说,我有两种情况。对于第一种情况,如果索引是带有点和该点之后的零的数值,我需要删除该点和该点之后的所有零。第二种情况是索引具有带点的数值,但点后的数字不为零。我只需要摆脱点。我将如何做到这一点?

标签: pythonpandasnumpydata-manipulationdata-cleaning

解决方案


我认为你需要:

df = pd.DataFrame({'a':range(5)}, index=[1.0,5.0,2323.0,1.446,10.5])
print (df)
          a
1.000     0
5.000     1
2323.000  2
1.446     3
10.500    4

df.index = df.index.map(lambda x: int(x) if x.is_integer() else int(x * 1000))

或者:

df.index = np.where(df.index.astype(int) == df.index,df.index, df.index * 1000).astype(int)

print (df)
       a
1      0
5      1
2323   2
1446   3
10500  4

或者可能需要:

df.index = df.index.astype(str).str.replace('\.0','').str.replace('.','').astype(int)
print (df)
      a
1     0
5     1
2323  2
1446  3
105   4

推荐阅读