我正在尝试执行特定的 Pandas 操作,但不知道如何操作。假设下表是我的原始表格。
电子邮件 | 属性 |
---|---|
js@email | 国家:美国 |
js@email | 第一:约翰 |
js@email | 显示:约翰 |
js@email | 马克·史密斯 |
js@email | 地址:123 Main St |
js@email | 巴尔的摩 |
js@email | MD |
js@email | 12345 |
其余条目对于许多其他用户来说是相似的,但顺序可能不同。 数据框有超过 140 万行。我正在尝试获得以下输出。这可以就地完成,也可以通过创建一个新列来完成(无论哪个更好更快)。下面的示例显示了原位执行时的输出。
电子邮件 | 属性 |
---|---|
js@email | 国家:美国 |
js@email | 第一:约翰 |
js@email | 展示:约翰、马克·史密斯 |
js@email | 地址:123 Main St, Baltimore, MD, 12345 |
获取如下输出的规则如下:如果':'
条目中有'Attributes'
,则保留原始文本,如果条目中没有':'
则通过在中间添加 ','
将该文本移动到上面的条目。这样做直到下一个带有 ':'
的条目。
我现在使用的代码是:
df['Extended Attributes'].groupby(df['Extended Attributes'].str.contains(':').cumsum()).agg(', '.join)
但是,这仅返回一列带有索引的列,它不会修改原始数据帧,我无法将其插入原始数据帧,因为它没有空行,因此会出现不匹配。