如何从Python中的dataframe columns元素创建字符串?

her*_*lla 5 python string dataframe pandas

给定一个数据帧df,(现实生活是+1000行df).元素ColB是列表列表.

  ColA    ColB
0  'A'    [['a','b','c'],['d','e','f']]
1  'B'    [['f','g','h'],['i','j','k']]
2  'A'    [['l','m','n'],['o','p','q']]
Run Code Online (Sandbox Code Playgroud)

如何ColC使用不同列中的元素有效地创建一个字符串,如下所示:

      ColC
'A>+a b:c,+d e:f'
'B>+f g:h,+i j:k'
'A>+l m:n,+o p:q'
Run Code Online (Sandbox Code Playgroud)

我尝试了df.apply这些方法,灵感来自于:

df['ColC'] = df.apply(lambda x:'%s>' % (x['ColA']),axis=1)
Run Code Online (Sandbox Code Playgroud)

这适用于字符串的前2个元素.其余的都很难过.

Sco*_*ton 3

像这样的东西吗?

df['ColC']  = df.ColA + '>+' + df.ColB.str[0].str[0] + \
              ' ' + df.ColB.str[0].str[1] + ':' + \
              df.ColB.str[0].str[2] + ',+' + \
              df.ColB.str[1].str[0] + ' ' + \
              df.ColB.str[1].str[1] + ':' + \
              df.ColB.str[1].str[2]
Run Code Online (Sandbox Code Playgroud)

输出:

  ColA                    ColB             ColC
0    A  [[a, b, c], [d, e, f]]  A>+a b:c,+d e:f
1    B  [[f, g, h], [i, j, k]]  B>+f g:h,+i j:k
2    A  [[l, m, n], [o, p, q]]  A>+l m:n,+o p:q
Run Code Online (Sandbox Code Playgroud)

时间安排

df = pd.concat([df]*333)

温氏法

%%timeit df[['t1','t2']]=df['ColB'].apply(pd.Series).applymap(lambda x : ('{} {}:{}'.format(x[ 0],x[1],x[2]))) df.ColA+'>+'+df.t1+',+'+df.t2

1 个循环,3 次最佳:每个循环 363 毫秒

米拉杜洛法

%%timeit df.apply(lambda r:'{}>+{} {}:{},+{} {}:{}'.format(*展平(r)), axis=1)

10 个循环,3 个循环中最好的:每个循环 74.9 毫秒

斯科特波士顿法

%%timeit df.ColA + '>+' + df.ColB.str[0].str[0] + \ ' ' + df.ColB.str[0].str[1] + ':' + \ df .ColB.str[0].str[2] + ',+' + \ df.ColB.str[1].str[0] + ' ' + \ df.ColB.str[1].str[1] + ':' + \ df.ColB.str[1].str[2]

100 个循环,3 个循环中最好的:每个循环 12.4 毫秒