单元格中的多行值到单行 separated_python

Multiline values in a cell to single line separated_python

我有一个 df,其中第 'col2' 列第一个单元格的值不是单行而是多行,如下例所示:

col1   col2
ID1    value1
       value2
       value3
ID2    value4, value5, value6

我想把它们放在一行中,就像 ID2 的例子一样,一行之间有任何分隔符。 有没有办法用 python 做到这一点?

我的 df:

df = pd.DataFrame({'col1': [1, 2], 'col2': ['value1\nvalue2\nvalue3', 'value4, value5, value6']})

尝试:

df['col2']=df['col2'].replace('\n',',',regex=True)

如果您想将所有出现的 '\n' 替换为 ',',请使用:

df=df.replace('\n',',',regex=True)

df的输出:

    col1    col2
0   1       value1,value2,value3
1   2       value4, value5, value6

尝试以下操作:

df['col1']=df['col1'].fillna(method='ffill')
gr=df.groupby('col1')['col2'].agg(list)
gr=gr.reset_index()
gr['col2']=gr['col2'].apply(lambda x: ','.join(x) if type(x) == list else x)

>>> print(gr)

  col1                  col2
0  ID1  value1,value2,value3
1  ID2  value4,value5,value6

对于每一列(假设您可能有多个列可能具有类似数据),只需使用 df[col].replace(target,toBeReplaced,regex=True),该列中包含 target 的所有行将被替换与 toBeReplaced.

import pandas as pd

df = pd.DataFrame({'col1': [1, 2], 'col2': ['value1\nvalue2\nvalue3', 'value4, value5, value6']})

for col in list(df):
    df[col] = df[col].replace('\n',',',regex=True)

print(df)