Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果在另一个列表中,条目字符串具有相同的值,则将字符串分组并连接在一起_Python_List_Pandas - Fatal编程技术网

Python 如果在另一个列表中,条目字符串具有相同的值,则将字符串分组并连接在一起

Python 如果在另一个列表中,条目字符串具有相同的值,则将字符串分组并连接在一起,python,list,pandas,Python,List,Pandas,我有一个熊猫数据框架,每个季度都有公司观察结果,每个公司观察结果中都有不同人士的发言。因此,我有“常见”变量,如年份、头衔、公司名称等。然后,每季度观察,我有一个变量AllInfo ListMain,它存储为每个观察中的列表,包含名称和讲话作为单独的列表条目 例如,对于“AllInfo ListMain”的一行,条目如下所示: [[Mark Johnson, Hello], [Christina Brown, Have a good day], [Mark Johnson, You too],

我有一个熊猫数据框架,每个季度都有公司观察结果,每个公司观察结果中都有不同人士的发言。因此,我有“常见”变量,如年份、头衔、公司名称等。然后,每季度观察,我有一个变量AllInfo ListMain,它存储为每个观察中的列表,包含名称和讲话作为单独的列表条目

例如,对于“AllInfo ListMain”的一行,条目如下所示:

[[Mark Johnson, Hello], [Christina Brown, Have a good day], [Mark Johnson, You too], [Christina Brown, Thank you]]
Index   Year    Title   Firm    allinfolistmain
0   2009    CC A 2009   A   [[Mark Johnson, Hello], [Christina Brown, Have a good day], [Mark Johnson, You too], [Christina Brown, Thank you]]
1   2009    CC B 2009   B   [[Lucas Bass, Hello], [Harm Brown, Have a good day], [Lucas Bass, You too], [Harm Brown, Thank you]]
2   2008    CC A 2008   A   [[Mark Johnson, Nice to see you], [Christina Brown, You too], [Mark Johnson,Thanks], [Christina Brown, Bye]]
整个数据帧如下所示:

[[Mark Johnson, Hello], [Christina Brown, Have a good day], [Mark Johnson, You too], [Christina Brown, Thank you]]
Index   Year    Title   Firm    allinfolistmain
0   2009    CC A 2009   A   [[Mark Johnson, Hello], [Christina Brown, Have a good day], [Mark Johnson, You too], [Christina Brown, Thank you]]
1   2009    CC B 2009   B   [[Lucas Bass, Hello], [Harm Brown, Have a good day], [Lucas Bass, You too], [Harm Brown, Thank you]]
2   2008    CC A 2008   A   [[Mark Johnson, Nice to see you], [Christina Brown, You too], [Mark Johnson,Thanks], [Christina Brown, Bye]]
现在,对于每一行/观察,我想按名称(索引为0的列表元素)对演讲(索引为1的列表元素)进行分组,这样,演讲在列表中仅以一个字符串连接在一起,如下所示:

[[Mark Johnson, Hello You too], [Christina Brown, Have a good day Thank you]]
有人能帮我写一下代码吗?我怎样才能浏览每一行并创建这样一个新的列表?所有的建议都非常感谢,因为我仍然在编码的开始,我无法解决这个问题

非常感谢你!
Julia

如果我正确理解了您的问题以及您是如何创建数据帧的,这就是您想要做的吗?最后是打印的
列表

# a new dictionary of lists to collect all "speeches" values for each "name" key
nd = {}

for row in df['allinfolistmain']:     # for each row in the dataframe 
    for n in row:                     # for each name in the row
        try:                          # 
            if nd[n[0]]:              # check if the key already exists
                nd[n[0]].append(n[1]) # if it does, add speech to its list
        except KeyError:              # otherwise they key doesn't yet exist
            nd[n[0]] = [n[1]]         # we add the key and the speech

newlist = []                          # create a new list

for k, v in nd.iteritems():           # for each key, value in the new dictionary from previous step
    newlist.append((k, ' '.join(v)))  # add a tuple of (key, all speeches) as one string

print newlist
输出:

[('Christina Brown', 'Have a good day Thank you You too Bye'), 
 ('Mark Johnson', 'Hello You too Nice to see you Thanks'), 
 ('Lucas Bass', 'Hello You too'), 
 ('Harm Brown', 'Have a good day Thank you')]

如果我正确理解了您的问题以及您是如何创建数据帧的,这就是您想要做的吗?最后是打印的
列表

# a new dictionary of lists to collect all "speeches" values for each "name" key
nd = {}

for row in df['allinfolistmain']:     # for each row in the dataframe 
    for n in row:                     # for each name in the row
        try:                          # 
            if nd[n[0]]:              # check if the key already exists
                nd[n[0]].append(n[1]) # if it does, add speech to its list
        except KeyError:              # otherwise they key doesn't yet exist
            nd[n[0]] = [n[1]]         # we add the key and the speech

newlist = []                          # create a new list

for k, v in nd.iteritems():           # for each key, value in the new dictionary from previous step
    newlist.append((k, ' '.join(v)))  # add a tuple of (key, all speeches) as one string

print newlist
输出:

[('Christina Brown', 'Have a good day Thank you You too Bye'), 
 ('Mark Johnson', 'Hello You too Nice to see you Thanks'), 
 ('Lucas Bass', 'Hello You too'), 
 ('Harm Brown', 'Have a good day Thank you')]
单列表测试:

L=[('Mark Johnson', 'Hello'), ('Christina Brown', 'Have a good day'), ('Mark Johnson', 'You too'), ('Christina Brown', 'Thank you')]
g(L)
Out[784]: 
[('Mark Johnson', 'Hello You too'),
 ('Christina Brown', 'Have a good day Thank you')]
单列表测试:

L=[('Mark Johnson', 'Hello'), ('Christina Brown', 'Have a good day'), ('Mark Johnson', 'You too'), ('Christina Brown', 'Thank you')]
g(L)
Out[784]: 
[('Mark Johnson', 'Hello You too'),
 ('Christina Brown', 'Have a good day Thank you')]

嗨,我正在努力更好地理解你提供的信息和你的目标。您是说要创建一个类似于第二个具有3行的块的数据帧吗?或者您已经有了数据帧,并且希望将
allinfo-listmain
中的每个“名称”与其所有相关的发言分组?我会添加一个答案来进一步说明我的意思。好的,没问题。好吧,有几个答案可能有用。如果您需要更多帮助,请随时回复。谢谢嘿谢谢你的回复!实际上,我必须调整一件事——我有一个列表列表,而不是元组列表。另外,我希望它与下面的输出有所不同,因为我已经有了一个数据帧。例如,对于第1行,我想:[[马克·约翰逊,你好],[克里斯蒂娜·布朗,祝您愉快,谢谢]],对于第2行:[[卢卡斯·巴斯,你好],[哈姆·布朗,祝您愉快,谢谢]]。因此,我不想为同一发言者跨行添加演讲,而是为同一发言者添加行内(观察)。另外,我希望它在一个列表中。还是元组列表更好?谢谢进一步解释。我想我没有像你那样复制数据帧。也许另一个答案适用于您已经拥有的数据框架?嗨,我正试图更好地理解您提供的信息和您的目标。您是说要创建一个类似于第二个具有3行的块的数据帧吗?或者您已经有了数据帧,并且希望将
allinfo-listmain
中的每个“名称”与其所有相关的发言分组?我会添加一个答案来进一步说明我的意思。好的,没问题。好吧,有几个答案可能有用。如果您需要更多帮助,请随时回复。谢谢嘿谢谢你的回复!实际上,我必须调整一件事——我有一个列表列表,而不是元组列表。另外,我希望它与下面的输出有所不同,因为我已经有了一个数据帧。例如,对于第1行,我想:[[马克·约翰逊,你好],[克里斯蒂娜·布朗,祝您愉快,谢谢]],对于第2行:[[卢卡斯·巴斯,你好],[哈姆·布朗,祝您愉快,谢谢]]。因此,我不想为同一发言者跨行添加演讲,而是为同一发言者添加行内(观察)。另外,我希望它在一个列表中。还是元组列表更好?谢谢进一步解释。我想我没有像你那样复制数据帧。也许另一个答案适用于您已经拥有的数据帧?