如何用逗号交换名字和姓氏并添加新列?

amy*_*pon 2 python indexing dataframe pandas

我有一个数据框架,其中索引是名称。但是名字是名字,姓氏*

数据看起来像这样

Index          Sales
Jones, Mike*   500
James, Amy     300 
Run Code Online (Sandbox Code Playgroud)

目标是拥有(或将索引更改为名称)

Index         Sales    Special 
Mike Jones     500       1
Amy James      300       0
Run Code Online (Sandbox Code Playgroud)

如果存在*,则创建一个新列,如果存在*,则新列为1,否则为0?

Rom*_*est 7

假设Index作为索引列:

In [32]: df['Special'] = df.index.str.endswith('*').astype(int)                                                 

In [33]: df.set_index(df.index.str.replace(r'^(\w+),\s+(\w+)\*?', '\\2 \\1', regex=True))                       
Out[33]: 
            Sales  Special
Index                     
Mike Jones    500        1
Amy James     300        0
Run Code Online (Sandbox Code Playgroud)

细节:

  • df.index.str.endswith('*').astype(int)-检查index列值是否以结尾,*并将逻辑结果转换为整数值(being 01
  • df.index.str.replace(r'^(\w+),\s+(\w+)\*?', '\\2 \\1', regex=True)-将index列值替换为第一个和第二个正则表达式捕获组的内容,(\w+)将其位置交换为\\2 \\1(第2个后跟第1个)