假设我有一个数据框,其国家/地区如下:
cc | temp
US | 37.0
CA | 12.0
US | 35.0
AU | 20.0
Run Code Online (Sandbox Code Playgroud)
我知道有一个pd.get_dummies函数可以将这些国家/地区转换为"单热编码".但是,我希望将它们转换为索引,以便我得到它cc_index = [1,2,1,3].
我假设有一种比使用get_dummies和numpy where子句更快的方法,如下所示:
[np.where(x) for x in df.cc.get_dummies().values]
使用'因子'在R中这样做有点容易,所以我希望大熊猫有类似的东西.
我有一个带有长字符串列的熊猫数据框。我想添加一个唯一标识符。我需要保留所有行,但重复的字符串应该获得相同的 ID。
我想稍后在合并中使用这个新的唯一标识符。
让我们创建一个 df:
df = pd.DataFrame({
'longstrings': ['aaaaaaaa', 'asdfasdf', 'bbbbbbbbb', 'asdfasdf', 'aaaaaaaa'],
'somevalue': [1, 2, 3, 4, 5]})
Run Code Online (Sandbox Code Playgroud)
期望的输出:
longstrings somevalue unique_ID
0 aaaaaaaa 1 0
1 asdfasdf 2 1
2 bbbbbbbbb 3 2
3 asdfasdf 4 1
4 aaaaaaaa 5 0
Run Code Online (Sandbox Code Playgroud)
我曾尝试使用 groupby:
grouped = df.groupby('longstrings')
grouped.transform(lambda ???)
Run Code Online (Sandbox Code Playgroud)
我只是不知道如何获得一个好的 lambda 函数。是否grouped有某种指标?
我还考虑过在我的字符串上使用哈希函数。但是,这不会创建方便的小数字。另外,哈希冲突的可能性有多大?我的字符串有时非常相似。