unp*_*ood 4 python foreign-keys dataframe pandas
我有一个像这样的简单数据框:
df = pd.DataFrame({'Name': ['John Doe', 'Jane Smith', 'John Doe', 'Jane Smith','Jack Dawson','John Doe']})
df:
Name
0 John Doe
1 Jane Smith
2 John Doe
3 Jane Smith
4 Jack Dawson
5 John Doe
Run Code Online (Sandbox Code Playgroud)
我想添加一列 ['foreign_key'] 为每个唯一名称分配一个唯一 ID(但具有相同名称的行应该具有相同的 'foreign_key'。因此最终输出如下所示:
df:
Name Foreign_Key
0 John Doe foreignkey1
1 Jane Smith foreignkey2
2 John Doe foreignkey1
3 Jane Smith foreignkey2
4 Jack Dawson foreignkey3
5 John Doe foreignkey1
Run Code Online (Sandbox Code Playgroud)
我正在尝试将groupby与应用的自定义函数一起使用。所以我的第一步是:
name_groupby = df.groupby('Name')
Run Code Online (Sandbox Code Playgroud)
这就是拆分,接下来是应用和组合。文档中似乎没有像这个例子这样的任何内容,我不确定从这里去哪里。
我开始应用的自定义函数如下所示:
def make_foreign_key(groupby_df):
return groupby_df['Foreign_Key'] = 'foreign_key' + num
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏!
您可以将 Name 设为 Categorical,效果大致相同:
In [21]: df["Name"].astype('category')
Out[21]:
0 John Doe
1 Jane Smith
2 John Doe
3 Jane Smith
4 Jack Dawson
5 John Doe
Name: Name, dtype: category
Categories (3, object): [Jack Dawson, Jane Smith, John Doe]
Run Code Online (Sandbox Code Playgroud)
请参阅文档的分类部分。
这可能就足够了,或者您可以将其作为外键取出codes。
In [22]: df["Name"] = df["Name"].astype('category')
In [23]: df["Name"].cat.codes
Out[23]:
0 2
1 1
2 2
3 1
4 0
5 2
dtype: int8
In [24]: df["Foreign_Key"] = c.cat.codes
In [25]: df
Out[25]:
Name Foreign_Key
0 John Doe 2
1 Jane Smith 1
2 John Doe 2
3 Jane Smith 1
4 Jack Dawson 0
5 John Doe 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8683 次 |
| 最近记录: |