Python 连接数据帧中的行

Python 连接数据帧中的行,python,pandas,dataframe,Python,Pandas,Dataframe,熊猫的数据框对象有问题 我读过csv文件,我有这样的数据帧: 我想在带有符号“|”的行之间连接行, 应该是这样的: Pandas的函数是这样的,用特定的分隔符连接行 或者我应该如何实现这一点呢?我假设感兴趣的列的名称为txt 定义以下函数以连接组的内容 字段的名称: def concatRows(grp): tt = grp[grp != '|'].to_list() rv = ' '.join(tt) return rv if len(rv) > 0 else

熊猫的数据框对象有问题

我读过csv文件,我有这样的数据帧:

我想在带有符号“|”的行之间连接行, 应该是这样的:

Pandas的函数是这样的,用特定的分隔符连接行
或者我应该如何实现这一点呢?

我假设感兴趣的列的名称为txt

定义以下函数以连接组的内容 字段的名称:

def concatRows(grp):
    tt = grp[grp != '|'].to_list()
    rv = ' '.join(tt)
    return rv if len(rv) > 0 else None
在您的示例数据中,我注意到关于最后一行的“边缘情况”: 它包含一个空字符串,该字符串应丢弃 (而不是创建空行)

考虑到这一点,上述函数检测到这种情况,然后 返回None(实际删除将在稍后完成)

然后按以下方式应用此功能:

df.groupby((df.txt == '|').cumsum()).txt.apply(concatRows).dropna()
请注意(df.txt='|')。cumsum()返回以下组:

  • 第1组-索引为0-2的行(不带任何“|”)
  • 第2组-索引为3-7的行(以“|”开头)
  • 等等
因此grp[grp!='|']会删除元素=='|'(如果有的话)。 然后rv包含联接结果。 但如果rv是一个空字符串,则不会返回任何值


然后,在最后一次调用dropna时,任何None的情况都将被删除。

如果您的列不是太大,您可以从中生成一个字符串,然后在“|”处拆分它。最后,创建一系列新的结果列表

se=pd.Series(['foo','foobar','|','bar','|','|','alpha']))
印刷品(se)
se=pd.Series(se.str.cat(sep='').split('|'))
se=se.loc[se.ne('')。重置索引(drop=True)
#在最后一步中,删除从连续的“|”创建的“”元素。
印刷品(se)

其中se是数据帧的列。

不要使用屏幕截图。使用。如果我有0个foo 1 foobar 2 | 3 bar 4 | 5 | 6 alpha数据类型:object它不能正确工作,它会给出0个foo 1 foobar 2 bar 3 4 alpha数据类型:objec
0       foo
1    foobar
2         |
3       bar
4         |
5         |
6     alpha
dtype: object
0    foo foobar 
1           bar 
2          alpha
dtype: object