df.explode() 及等价写法

数据场景

以下面的DataFrame为例,每行数据都有多个site,以、分隔

df.explode() 及等价写法_第1张图片

我想把数据分成多行,即一个query对应一个site,效果如下。如何实现?

df.explode() 及等价写法_第2张图片 

 

代码

写法1:df.explode()

# 将site列的字符串按、拆分成列表
df['site'] = df['site'].str.split('、')

# 使用explode方法将列表元素展开成多行
df_exploded = df.explode('site')

注意,explode方法是pandas 0.25.0版本及以上才引入的。查看自己的pandas版本可以用:

print(pd.__version__)

写法2:df.explode() 的等价写法

如果报错AttributeError: ‘DataFrame’ object has no attribute ‘explode’ ,则说明使用的pandas版本低了,需要升级,或使用下面的等价写法:

# 将site列的字符串按、拆分成列表
df['site'] = df['site'].str.split('、')

# explode方法的等价写法
df_expanded = df.set_index('query')['site'].apply(pd.Series).stack().reset_index(level=-1, drop=True).reset_index(name='site')

你可能感兴趣的:(Coding随手记,python,pandas)