如何使不均匀的Pandas列成为唯一的Pandas列

2024-05-14 19:23:54 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下数据帧:

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是数据中唯一的列,仍然是数字形式。例如,在Time中的7序列可以是7.00, 7.01, 7.027.0, 7.1, 7.2等。如何将这个非唯一的数值列转换为仍然是数值的唯一列


Tags: 数据nameimportpandasdftimevalueas
3条回答

您可以使用^{}

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

如果索引为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

添加随机数据

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

相关问题 更多 >

    热门问题