# 请用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`将结果进行转置,以得到所需的结果。