如何将多个单元格中的字符串聚合到一个单元格中?
Posted
技术标签:
【中文标题】如何将多个单元格中的字符串聚合到一个单元格中?【英文标题】:How can I aggregate strings from many cells into one cell? 【发布时间】:2021-11-18 11:01:00 【问题描述】:假设我有两个班级,每个班级都有几个学生,我想考虑每个班级可能的配对。在我的原始数据中,每个学生有一行。
在 Pandas 中转换此数据集的最简单方法是什么
Class Students
0 1 A
1 1 B
2 1 C
3 1 D
4 1 E
5 2 F
6 2 G
7 2 H
喜欢这个新东西吗?
Class Students
0 1 A,B
1 1 A,C
2 1 A,D
3 1 A,E
4 1 B,C
5 1 B,D
6 1 B,E
7 1 C,D
6 1 B,E
8 1 C,D
9 1 C,E
10 1 D,E
11 2 F,G
12 2 F,H
12 2 G,H
【问题讨论】:
向我们展示您的尝试。 有点愚蠢的东西,多步骤。仍在进行第二步。这是第一个:for i in school['class'].unique(): class.append(i) pairs.append(list(combinations(school[school['class']==i]['student'], 2)))
我相信您应该在问题正文中包含您尝试过的任何代码。这避免了与问题质量相关的反对意见
【参考方案1】:
试试这个:
import itertools
import pandas as pd
cla = [1, 1, 1, 1, 1, 2, 2, 2]
s = ["A", "B", "C", "D" , "E", "F", "G", "H"]
df = pd.DataFrame(cla, columns=["Class"])
df['Student'] = s
def create_combos(list_students):
combos = itertools.combinations(list_students, 2)
str_students = []
for i in combos:
str_students.append(str(i[0])+","+str(i[1]))
return str_students
def iterate_df(class_id):
df_temp = df.loc[df['Class'] == class_id]
list_student = list(df_temp['Student'])
list_combos = create_combos(list_student)
list_id = [class_id for i in list_combos]
return list_id, list_combos
list_classes = set(list(df['Class']))
new_id = []
new_combos = []
for idx in list_classes:
tmp_id, tmp_combo = iterate_df(idx)
new_id += tmp_id
new_combos += tmp_combo
new_df = pd.DataFrame(new_id, columns=["Class"])
new_df["Student"] = new_combos
print(new_df)
【讨论】:
如果对您的问题有帮助,请接受答案 非常感谢! 别忘了接受答案以上是关于如何将多个单元格中的字符串聚合到一个单元格中?的主要内容,如果未能解决你的问题,请参考以下文章
如何在swift ios中的自定义TableView单元格中显示多个字符串值到多个标签?
如何从具有多个数组的字典中获取特定键并存储到放置在表格视图单元格中的字符串中