2024-09-30 16:19:41 发布
网友
比方说,我有下面的数据框
Person_info (Bob, 2) (John, 1) (Bek, 10) (Bob, 6)
我想通过保持它们的价值来匿名
Person_info (Person 1, 2) (Person 2, 1) (Person 3, 10) (Person 1, 6)
我有一个简单的匿名方法,但它不能帮助我得到想要的
有谁能帮上忙吗
在this question之后,您可以使用strip()和split()方法:
strip()
split()
out=df['Person_info'].str.strip('()| ').str.split(',',1,expand=True)
然后根据this answer使用factorize()方法:
factorize()
out[0]='Person' + pd.Series(pd.factorize(out[0])[0] + 1).astype(str)
最后使用agg()方法:
agg()
df['Person_info']=out.agg(tuple,1)
df的输出:
df
Person_info 0 (Person1, 2) 1 (Person2, 1) 2 (Person3, 10) 3 (Person1, 6)
将names转换为类别并获取类别代码;)
names
import pandas as pd dataf = pd.DataFrame( [('Bob', 2), ('John', 1), ('Bek', 10), ('Bob', 6)], columns=['name','valuex']) dataf["name"] = dataf["name"].astype("category").cat.codes.map(lambda x: f"Person {x}") print(dataf)
name valuex 0 Person 1 2 1 Person 2 1 2 Person 0 10 3 Person 1 6
… dataf["Person_info"] = [info for info in dataf.itertuples(index=False, name=None)]
name valuex Person_info 0 Person 1 2 (Person 1, 2) 1 Person 2 1 (Person 2, 1) 2 Person 0 10 (Person 0, 10) 3 Person 1 6 (Person 1, 6)
在this question之后,您可以使用
strip()
和split()
方法:然后根据this answer使用
factorize()
方法:最后使用
agg()
方法:df
的输出:将
names
转换为类别并获取类别代码;)输出
更新:
输出:
相关问题 更多 >
编程相关推荐