如何使非唯一的熊猫列成为唯一的列

时间:2020-01-14 18:07:51

标签: python pandas dataframe

说我有以下数据框:

import pandas as pd

df = pd.DataFrame({'Name': ['Jim','Bob','Tim','Sal','Mel'], 
                   'Time': [7,7,7,8,9], 
                   'Value':[15,13,17,6,27]})
Out[1]:
  Name  Time  Value
0  Jim     7     15
1  Bob     7     13
2  Tim     7     17
3  Sal     8      6
4  Mel     9     27

但是我希望Time是数据中的唯一列,但仍为数字形式。例如,7中的Time系列可能是7.00, 7.01, 7.027.0, 7.1, 7.2等。我如何将这个非唯一的数字熊猫列转换为仍然数字?

3 个答案:

答案 0 :(得分:8)

您可以使用cumcount

df['Time'] += df.groupby('Time').cumcount() / 10
    Name    Time    Value
0   Jim     7.0     15
1   Bob     7.1     13
2   Tim     7.2     17
3   Sal     8.0     6
4   Mel     9.0     27

答案 1 :(得分:3)

添加随机数据

df.assign(Time=df.Time.add(np.random.rand(len(df)) / 10).round(2))

  Name  Time  Value
0  Jim  7.07     15
1  Bob  7.01     13
2  Tim  7.05     17
3  Sal  8.00      6
4  Mel  9.03     27

答案 2 :(得分:1)

如果索引为rangeindex,请使用字符串将index连接到Time。使用这种方法而不是常规的加法和除法,以避免结果泄漏到点前面的数字上。

df.Time = (df.Time.astype(str) + '.' + df.index.astype(str)).astype(float)

Out[1623]:
  Name  Time  Value
0  Jim   7.0     15
1  Bob   7.1     13
2  Tim   7.2     17
3  Sal   8.3      6
4  Mel   9.4     27