猿问

熊猫:匿名化client_id列,不可能回滚

我有一个带有 client_id 列的数据框,我想匿名化而没有任何回滚的可能性。


我想删除client_id,但为链接到客户端的每个原始文件创建相同的值(新列)


import pandas as pd


df = pd.DataFrame({

    'client_id':[111, 222, 111, 222, 333, 222, 111, 333], 

    'date':['2018-08-20', '2018-08-22', '2018-08-21', '2018-08-21', '2018-08-18', '2018-08-20', '2018-08-18', '2018-08-19'], 

    'action':['test1', 'test2', 'test3', 'test4', 'test5', 'test6', 'test7', 'test8']

    })

我的数据框:


client_id |    date   |  action |

    -----------------------------

    111 | '2018-08-20'| test1   | 

    222 | '2018-08-22'| test2   | 

    111 | '2018-08-21'| test3   |

    222 | '2018-08-21'| test4   |

    333 | '2018-08-18'| test5   |

    222 | '2018-08-20'| test6   |

    111 | '2018-08-18'| test7   | 

    333 | '2018-08-19'| test8   | 

预期结果:


 id |    date   |  action |

-----------------------------

1   | '2018-08-20'| test1   | 

2   | '2018-08-22'| test2   | 

1   | '2018-08-21'| test3   |

2   | '2018-08-21'| test4   |

3   | '2018-08-18'| test5   |

2   | '2018-08-20'| test6   |

1   | '2018-08-18'| test7   | 

3   | '2018-08-19'| test8   | 

我尝试使用pandas.core.groupby.DataFrameGroupBy.rank但它确实显示了预期的结果


 df['id']= df.groupby("client_id")["date"].rank(ascending=True)


白猪掌柜的
浏览 108回答 1
1回答

慕姐8265434

pandas.factorizedf.assign(client_id=df.client_id.factorize()[0] + 1)  action  client_id        date0  test1          1  2018-08-201  test2          2  2018-08-222  test3          1  2018-08-213  test4          2  2018-08-214  test5          3  2018-08-185  test6          2  2018-08-206  test7          1  2018-08-187  test8          3  2018-08-19numpy.uniquedf.assign(client_id=np.unique(df.client_id, return_inverse=True)[1] + 1)  action  client_id        date0  test1          1  2018-08-201  test2          2  2018-08-222  test3          1  2018-08-213  test4          2  2018-08-214  test5          3  2018-08-185  test6          2  2018-08-206  test7          1  2018-08-187  test8          3  2018-08-19
随时随地看视频慕课网APP

相关分类

Python
我要回答