多行字符串合并的Python循环

时间:2018-06-27 13:58:28

标签: python pandas

我正在寻找在python中创建一个循环,将多个字符串行连接在一起。我创建了现在列为“ Before”的表,然后创建了要创建“ After”的表。有关如何执行此操作的任何想法?我目前正在使用以下代码来仅获取一个字符串,但我需要能够循环整个数据帧:

df.str.cat(sep='')

之前:

Text       |    Channel  |  Destination   | Amount  | Total
string1           NaN           NaN           NaN      NaN
string2           DKI           US             34       5   
string3           NaN           NaN           NaN      NaN
string4           DKI           CA             39       20   

之后:

Text           |    Channel  |  Destination   | Amount  | Total
string1string2        DKI           US            34       5
string3string4        DKI           CA            39       20   

1 个答案:

答案 0 :(得分:2)

通过shift创建帮助者Series,通过notna检查非NaN,并通过cumsum创建组。

然后汇总函数的函数,删除索引名称,并为相同的列添加reindex

a = df['total'].shift().notna().cumsum()
#for oldier pandas versions
#a = df['total'].shift().notnull().cumsum()
d = {'row':'first', 'total':'last', 'Text':''.join}

df = df.groupby(a).agg(d).rename_axis(None).reindex(columns=df.columns)
print (df)
   row            Text  total
0    1  string1string2    3.0
1    3  string3string4    1.0