小编unp*_*ood的帖子

将 UUID 添加到 Pandas DF

假设我有一个像这样的 Pandas DataFrame:

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)

如果名称相同,我想添加一个带有相同 uuid 的列。例如,上面的 DataFrame 应该变成:

df:
            Name        UUID
        0   John Doe    6d07cb5f-7faa-4893-9bad-d85d3c192f52
        1   Jane Smith  a709bd1a-5f98-4d29-81a8-09de6e675b56
        2   John Doe    6d07cb5f-7faa-4893-9bad-d85d3c192f52
        3   Jane Smith  a709bd1a-5f98-4d29-81a8-09de6e675b56
        4   Jack Dawson 6a495c95-dd68-4a7c-8109-43c2e32d5d42
        5   John Doe    6d07cb5f-7faa-4893-9bad-d85d3c192f52
Run Code Online (Sandbox Code Playgroud)

uuid 应该从 uuid.uuid4() 函数生成。

我目前的想法是使用 groupby("Name").cumcount() 来识别哪些行具有相同的名称,哪些不同。然后我会用 cumcount 的键和 uuid 的值创建一个字典,并使用它来将 uuid …

python uuid pandas

6
推荐指数
2
解决办法
7243
查看次数

Pandas 根据名称列创建外国 ID 列

我有一个像这样的简单数据框:

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' …
Run Code Online (Sandbox Code Playgroud)

python foreign-keys dataframe pandas

4
推荐指数
1
解决办法
8683
查看次数

如果包含一个空格,熊猫将名称列拆分为名字和姓氏

假设我有一个包含如下名称的 Pandas DataFrame:

name_df = pd.DataFrame({'name':['Jack Fine','Kim Q. Danger','Jane Smith', 'Juan de la Cruz']})

    name
0   Jack Fine
1   Kim Q. Danger
2   Jane Smith
3   Juan de la Cruz
Run Code Online (Sandbox Code Playgroud)

我想分裂name柱成first_namelast_name是否有在名称中有一个空格。否则,我希望将全名推入first_name.

所以最终的 DataFrame 应该是这样的:

  first_name     last_name
0 Jack           Fine
1 Kim Q. Danger
2 Jane           Smith
3 Juan de la Cruz
Run Code Online (Sandbox Code Playgroud)

我试图通过首先应用以下函数来返回可以拆分为名字和姓氏的名称来实现此目的:

def validate_single_space_name(name: str) -> str:
    pattern = re.compile(r'^.*( ){1}.*$')
    match_obj = re.match(pattern, name)
    if match_obj:
        return name
    else:
        return None …
Run Code Online (Sandbox Code Playgroud)

python pandas

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

pandas ×3

python ×3

dataframe ×1

foreign-keys ×1

uuid ×1