单元格中的多行值到单行 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)
我有一个 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)