连接两列字符串列表的Pandas

2024-04-29 00:37:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个。。来自数据库的有趣的数据帧。数据框有两列,它们是字符串列表。我需要将这两个列表中的值合并,以创建列表的新列。例如:

data = [ 
    {'id': 1, 'l1': ['Luke', 'Han'], 'l2': ['Skywalker', 'Solo']}, 
    {'id': 2, 'l1': ['Darth', 'Kylo'], 'l2': ['Vader', 'Ren']},
    {'id': 3, 'l1': [], 'l2': []}
]                                                                                                                                                                
df = pd.DataFrame(data)   

请注意,第三行没有值。您还可以假定l1l2具有相同的长度。 我需要将l1和l2中的值合并(中间有空格),例如:

result = [
    {'id': 1, 'name': ['Luke Skywalker', 'Han Solo']},
    {'id': 2, 'name': ['Darth Vader', 'Kylo Ren']},
    {'id': 3, 'name': []}
]
result_df = pd.DataFrame(result)

Tags: 数据nameidl1列表dataresultsolo
2条回答

这将使您到达您想要的位置:假设您只有两列(如果您有更多的列,只需添加其中一列“+df.iloc[j、3&;或4&;或……]”[i])

Voila =[]
for j in range(len(df)):
    Voila.append([df.iloc[j,1][i]+ ' '+df.iloc[j,2][i] for i in range(len(df. 
                                                                loc[j,'l1']))])
df['Voila'] = Voila

您可以将dict comprehension' '.joinzip结合使用来迭代数据集,例如:

import pandas as pd


data = [ 
    {'id': 1, 'l1': ['Luke', 'Han'], 'l2': ['Skywalker', 'Solo']}, 
    {'id': 2, 'l1': ['Darth', 'Kylo'], 'l2': ['Vader', 'Ren']},
    {'id': 3, 'l1': [], 'l2': []}
]                                                                                                                                                                
df = pd.DataFrame(data) 

result = [
    {
        'id': row['id'], 
        'name': [' '.join(l1_l2) for l1_l2 in zip(row['l1'], row['l2'])]
    } for row in data
]

print(pd.DataFrame(result))
>>>
   id                        name
0   1  [Luke Skywalker, Han Solo]
1   2     [Darth Vader, Kylo Ren]
2   3                          []

相关问题 更多 >