[英]Combine 2 columns which are having comma separated strings into 1 column in pandas
I have a dataframe我有一个 dataframe
df = pd.DataFrame([["A","a$b,c$d,k$m","h,y,a"], ["B","n$e,d$w,t$y","t,r,s"]], columns=["id","c1","c2"])
I want to combine each element of column c1 which are separated by a comma with another element of column c2 with an asterisk(*)我想将用逗号分隔的 c1 列的每个元素与带有星号 (*) 的 c2 列的另一个元素组合起来
Expected output:预期 output:
df_out = pd.DataFrame([["A","a$b*h,c$d*y,k$m*a"], ["B","n$e*t,d$w*r,t$y*s"]], columns=["id","c3"])
How to do it?怎么做?
You can try out the below code.你可以试试下面的代码。
df = pd.DataFrame([["A","a$b,c$d,k$m","h,y,a"], ["B","n$e,d$w,t$y","t,r,s"]], columns=["id","c1","c2"])
def combine_list(a, b):
return (',').join([i+'*'+j for i, j in zip(a, b)])
df['c3'] = df.apply(lambda x: combine_list(x['c1'].split(','), x['c2'].split(',')), axis=1)
df_out = df[["id", "c3"]]
Hope this solves your query!希望这能解决您的疑问!
Use nested list comprehension with DataFrame.pop
for extract values and zip
, for add *
is used f-string
s and last join in join
:使用嵌套列表理解与
DataFrame.pop
提取值和zip
,对于 add *
使用f-string
s 和最后加入join
:
df['c3'] = [','.join(f'{i}*{j}' for i, j in zip(x.split(','), y.split(',')))
for x, y in zip(df.pop('c1'), df.pop('c2'))]
print (df)
id c3
0 A a$b*h,c$d*y,k$m*a
1 B n$e*t,d$w*r,t$y*s
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.