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]