请用python将表格df_index转化为结果my_result:
  X5zJxoD00Cah 2023年11月02日 33 0
# 请用python将表格df_index转化为结果my_result:

my_df = pd.DataFrame(
    data={
        'col_class': ['a'] * 3 + ['b'] * 2,
        'col_num': [1, 2, 5, 3, 4]
    }
)

my_result = {
    'a': [1, 2, 5],
    'b': [3, 4]
}

my_df.groupby('col_class')['col_num'].apply(list).to_dict()

groupby函数根据col_class列进行分组,然后使用apply(list)将每个分组中的col_num列转换为列表,并最后使用to_dict()方法将结果转换为字典

# 请用python将表格df_index转化为结果my_result,目的是:将每种categorization对应的serial中的连续数字进行合并

import pandas as pd

my_df = pd.DataFrame(
    data={
        'categorization': ['a'] * 3 + ['b'] * 2,
        'serial': [1, 2, 5, 3, 4]
    }
)

def merge_serial(group):
    sorted_serial = sorted(group)
    merged_serial = []
    start = sorted_serial[0]
    end = sorted_serial[0]
    for i in range(1, len(sorted_serial)):
        if sorted_serial[i] == end + 1:
            end = sorted_serial[i]
        else:
            if start == end:
                merged_serial.append(str(start))
            else:
                merged_serial.append(f"{start}-{end}")
            start = sorted_serial[i]
            end = sorted_serial[i]
    if start == end:
        merged_serial.append(str(start))
    else:
        merged_serial.append(f"{start}-{end}")
    return ', '.join(merged_serial)

my_result = my_df.groupby('categorization')['serial'].apply(merge_serial).reset_index().T

print(my_result)

在这个示例中,我们定义了一个名为`merge_serial`的函数,用于将每个分组中的`serial`列中的连续数字进行合并。我们首先对分组中的数字进行排序,然后遍历排序后的数字列表。如果当前数字与前一个数字相差1,说明是连续的数字,我们更新结束值。如果不是连续的数字,我们将前一个连续数字的起始值和结束值进行合并,并将合并后的结果添加到结果列表中。最后,我们将结果列表转换为字符串,并使用逗号进行分隔。然后,我们使用`apply`函数将这个函数应用到每个分组,并使用`reset_index()`方法重置索引。最后,我们使用`.T`将结果进行转置,以得到所需的结果。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  X5zJxoD00Cah   2023年12月11日   26   0   0 知乎Python迭代器
  X5zJxoD00Cah   2023年12月12日   34   0   0 Python.net
X5zJxoD00Cah