我有一个来自数据库的有趣的数据框。数据框有两列,它们是字符串列表。我需要合并这两个列表中的值,以创建一个新的列表列。例如:
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)
请注意,第三行没有值。您还可以假定l1
和l2
的长度相同。
我需要合并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)
答案 0 :(得分:2)
您将dict comprehension
和' '.join
与zip
结合使用来遍历数据集,例如:
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 []
答案 1 :(得分:0)
这应该使您到达想要的位置:假设您只有两列(如果有更多列,只需添加其中的''+ df.iloc [j,3&or 4&or ...] [i])之一< / p>
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