我对Pandas的DataFrame对象有问题。
我已经读取了csv文件,并且具有这样的DataFrame:
我想将带有符号'|'的行之间的行连接起来,它应该看起来像这样:
具有类似Pandas的功能,以特定的分隔符连接行或我应该如何实现
我假设关注的列的名称为txt。
定义以下功能以连接组的内容字段:
def concatRows(grp):
tt = grp[grp != '|'].to_list()
rv = ' '.join(tt)
return rv if len(rv) > 0 else None
在您的样本数据中,我注意到有关最后一行的“边缘情况”:它包含一个空字符串,应为discarded(而不是创建一个空行)。
要考虑到这一点,上述功能会检测到这种情况,然后返回None(稍后将进行实际删除)。
然后通过以下方式应用此功能:
df.groupby((df.txt == '|').cumsum()).txt.apply(concatRows).dropna()
注意(df.txt =='|')。cumsum()返回以下组:
所以grp [grp!='|']删除元素=='|' (如果有)。然后rv包含联接结果。但是,如果rv是空字符串,则会返回None。
然后,对dropna的最终调用将删除任何情况[
se = pd.Series(se.str.cat(sep=' ') \ # make the space separated string
.split('|')) \ # split it at '|'
.loc[sa.ne(' ')] \ # ' ' created from sequential '|'s
.reset_index(drop=True)
其中se是DataFrame的列。