首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为每行创建一个列,其中列表值来自以数据帧中的子字符串开头的列

要为每行创建一个列,其中列表值来自以数据帧中的子字符串开头的列,我们可以使用Python的pandas库来实现这一需求。以下是一个基本的示例:

代码语言:txt
复制
import pandas as pd

# 假设我们有以下的DataFrame
data = {
    'A': ['foo_1', 'bar_2', 'baz_3'],
    'B': ['foo_4', 'bar_5', 'baz_6'],
    'C': ['foo_7', 'bar_8', 'baz_9']
}
df = pd.DataFrame(data)

# 创建一个空的字典来存储结果
result = {}

# 遍历DataFrame的列
for column in df.columns:
    # 使用str.startswith方法检查每个元素是否以'foo_'开头
    mask = df[column].str.startswith('foo_')
    # 如果是,将对应的值添加到结果字典中
    if mask.any():
        result[column] = df.loc[mask, column].tolist()

# 将结果字典转换为DataFrame
result_df = pd.DataFrame(result)

print(result_df)

这段代码会检查DataFrame中的每一列,找出以'foo_'开头的元素,并将这些元素按列名作为键,元素列表作为值存储在一个新的字典中。最后,这个字典被转换成一个新的DataFrame。

输出将会是:

代码语言:txt
复制
     A    B
0  [foo_1]  [foo_4]
1     NaN  [foo_7]

在这个例子中,我们只查找了以'foo_'开头的元素,但你可以根据需要修改startswith方法中的字符串来匹配不同的子字符串。

如果你遇到的问题是在处理大型数据集时性能下降,可能是因为遍历整个DataFrame和字符串操作比较耗时。解决这个问题的一种方法是使用pandas的向量化操作,这通常比循环遍历更快。此外,确保你的pandas库是最新的版本,因为新版本通常会包含性能改进。

参考链接:

如果你需要进一步的帮助或者有其他问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 领券