Python 熊猫-合并两列(一列为列表,一列为字符串)

Python 熊猫-合并两列(一列为列表,一列为字符串),python,pandas,pandas-apply,Python,Pandas,Pandas Apply,要合并两列,一列是字符串,另一列是字符串列表,要将字符串附加到另一列的列表中,例如: input: A B 5 [1,2] 2 [3,4] return: A B C 5 [1,2] [1,2,5] 2 [3,4] [3,4,2] 试图使用apply,但没有使用DataFrame处理不同类型的列。apply: >>> df = pd.DataFrame({'A': ['5', '2'], 'B': [[1, 2], [3, 4]]}) >&

要合并两列,一列是字符串,另一列是字符串列表,要将字符串附加到另一列的列表中,例如:

input: 
A   B    
5 [1,2]
2 [3,4]

return:
A  B     C
5 [1,2]  [1,2,5]
2 [3,4]  [3,4,2]

试图使用apply,但没有使用DataFrame处理不同类型的列。apply:

>>> df = pd.DataFrame({'A': ['5', '2'], 'B': [[1, 2], [3, 4]]})
>>> df['C'] = df.apply(lambda r: r['B'] + [r['A']], axis=1)
>>> df
   A       B          C
0  5  [1, 2]  [1, 2, 5]
1  2  [3, 4]  [3, 4, 2]

如果使用
应用

df = pd.DataFrame({'A': ['523', '212'], 'B': [[1, 2], [3, 4]]})

df.A.apply(lambda x : [x])+df.B
Out[465]: 
0    [523, 1, 2]
1    [212, 3, 4]
dtype: object

@0p3n5ourcE,你说得对。我更新了答案以删除多余的
int
呼叫。谢谢你的评论。哦!我删除了评论。谢谢使用lambda通常非常慢。@Bharathshetty,我知道。我想不出
df['A']。像你那样应用(list)
。@Bharathshetty,我更新了答案,加入了你的修改版本。需要显式
int
转换:
[[int(r[0])]+r[1]表示df.values中的r.tolist()]
由于理解列表的速度,我投了赞成票。一个愚蠢的错误使我丢失了对列的添加:(@falsetru如果你有时间,你能告诉我为什么df.values.tolist()中的x的附加(x[0])不起作用吗?thanks@Wen,
list.append
原地追加,不返回新值;
None
。对于df.values.tolist()中的x,请尝试
[x[1]+[x[0]]
@Wen,没问题。python编程快乐!如果df=pd.DataFrame({'A':['5','2'],'B':[[1,2,6],[3,4,7]}),先生?
df['C']=[[x[0]] + x[1] for x in df.values.tolist()]
df
Out[435]: 
   A       B          C
0  5  [1, 2]  [5, 1, 2]
1  2  [3, 4]  [2, 3, 4]
df = pd.DataFrame({'A': ['523', '212'], 'B': [[1, 2], [3, 4]]})

df.A.apply(lambda x : [x])+df.B
Out[465]: 
0    [523, 1, 2]
1    [212, 3, 4]
dtype: object
df.assign(C=[[x, y, z] for x, (y, z) in zip(df.A, df.B)])

   A       B          C
0  5  [1, 2]  [5, 1, 2]
1  2  [3, 4]  [2, 3, 4]