如何有效地拆分 Pandas DataFrame 中的逗号分隔字符串?
在 Pandas DataFrame 中拆分逗号分隔的字符串条目
输入数据通常由用逗号等字符分隔的值构成。使用 Pandas 数据框时,有必要拆分这些字符串条目并为每个值创建单独的行。在本文中,我们将深入研究可有效实现此目标的方法。
利用 Pandas 的 .explode() 方法
在 Pandas 版本 0.25.0 和 1.3.0 中引入, .explode() 方法为爆炸包含列表或数组的列提供了一种简单有效的解决方案。它可以在单列和多列上运行,为处理复杂数据集提供了灵活性。
语法:
dataframe.explode(column_name)
示例:
import pandas as pd # Dataframe with a column containing comma-separated values df = pd.DataFrame({'var1': ['a,b,c', 'd,e,f'], 'var2': [1, 2]}) # Exploding the 'var1' column df = df.explode('var1') # Resulting dataframe with separate rows for each value print(df)
用于爆炸多个的自定义向量化函数列
对于需要分解多个列的更复杂场景,自定义向量化函数可以提供通用的解决方案:
函数定义:
def explode(df, lst_cols, fill_value='', preserve_index=False): # Calculate lengths of lists lens = df[lst_cols[0]].str.len() # Repeat values for non-empty lists res = (pd.DataFrame({ col:np.repeat(df[col].values, lens) for col in df.columns.difference(lst_cols)}, index=np.repeat(df.index.values, lens)) .assign(**{col:np.concatenate(df.loc[lens>0, col].values) for col in lst_cols})) # Append rows with empty lists if (lens == 0).any(): res = (res.append(df.loc[lens==0, df.columns.difference(lst_cols)], sort=False) .fillna(fill_value)) # Revert index order and reset index if requested res = res.sort_index() if not preserve_index: res = res.reset_index(drop=True) return res
示例:
# Dataframe with multiple columns containing lists df = pd.DataFrame({ 'var1': [['a', 'b'], ['c', 'd']], 'var2': [['x', 'y'], ['z', 'w']] }) # Exploding 'var1' and 'var2' columns df = explode(df, ['var1', 'var2']) # Resulting dataframe with separate rows for each list item print(df)
分组转换
另一种方法涉及使用 .transform() 来应用一个自定义函数,用于分割字符串条目并创建新的行:
自定义函数:
def split_fun(row): return [row['var1'].split(',')]
示例:
# Dataframe with a column containing comma-separated values df = pd.DataFrame({'var1': ['a,b,c', 'd,e,f'], 'var2': [1, 2]}) # Creating a new column with split values using transform df['var1_split'] = df.transform(split_fun) # Unnest the newly created column to separate rows df = df.unnest('var1_split') # Resulting dataframe with separate rows for each value print(df)
结论
根据数据集的具体要求和复杂程度,可以采用不同的方法进行分割Pandas 数据框中以逗号分隔的字符串条目。利用 .explode() 方法提供了一种简单而高效的方法,而自定义向量化函数则为处理更复杂的场景提供了灵活性。
以上是如何有效地拆分 Pandas DataFrame 中的逗号分隔字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

使用FiddlerEverywhere进行中间人读取时如何避免被检测到当你使用FiddlerEverywhere...

如何在10小时内教计算机小白编程基础?如果你只有10个小时来教计算机小白一些编程知识,你会选择教些什么�...

攻克Investing.com的反爬虫策略许多人尝试爬取Investing.com(https://cn.investing.com/news/latest-news)的新闻数据时,常常�...

Python3.6环境下加载pickle文件报错:ModuleNotFoundError:Nomodulenamed...

使用Scapy爬虫时管道文件无法写入的原因探讨在学习和使用Scapy爬虫进行数据持久化存储时,可能会遇到管道文�...
