从 DataFrame 列中提取字符串数据以分隔列
Extract String Data From DataFrame Column To Separate Columns
我有一个如下所示的数据框列:
df['out_column']
0 Out 0: 0.024 Out 1: 0.005
1 Out 0: 0.024 Out 1: 0.009
2 Out 0: 0.024 Out 1: 0.009
3 Out 0: 0.024 Out 1: 0.01
4 Out 0: 0.024 Out 1: 0.011
5 Out 0: 0.017 Out 1: 0.018
6 Out 0: 0.146 Out 1: 0.081
7 Out 0: 0.001 Out 1: 0.002
8 Out 0: 0.022 Out 1: 0.009
9 Out 0: 0.012 Out 1: 0.008
如何将此列中的数据分离到具有Out 0:
和Out 1:
前面的值的其他列中?
预期结果是:
col1 col2
0 0.024 0.005
1 0.024 0.009
2 0.024 0.009
3 0.024 0.01
4 0.024 0.011
5 0.017 0.018
6 0.146 0.081
7 0.001 0.002
8 0.022 0.009
9 0.012 0.008
您可以使用 extractall
:
df[['col1', 'col2']] = df['out_column'].str.extractall(
pat=r'.*?\s+\d+:\s+([\d.]+)').unstack(-1)
输出:
out_column col1 col2
0 Out 0: 0.024 Out 1: 0.005 0.024 0.005
1 Out 0: 0.024 Out 1: 0.009 0.024 0.009
2 Out 0: 0.024 Out 1: 0.009 0.024 0.009
3 Out 0: 0.024 Out 1: 0.01 0.024 0.01
4 Out 0: 0.024 Out 1: 0.011 0.024 0.011
5 Out 0: 0.017 Out 1: 0.018 0.017 0.018
6 Out 0: 0.146 Out 1: 0.081 0.146 0.081
7 Out 0: 0.001 Out 1: 0.002 0.001 0.002
8 Out 0: 0.022 Out 1: 0.009 0.022 0.009
9 Out 0: 0.012 Out 1: 0.008 0.012 0.008
注意:如果需要,请使用 df = df.drop('out_columns', 1)
。
使用 Out 1
和 Out 2
的常规模式,您可以多次 str.extract
并使用 .
查找任何内容 *
print(df['out_column'].str.extract('Out 0: (.*) Out 1: (.*)'))
0 1
0 0.024 0.005
1 0.024 0.009
2 0.024 0.009
3 0.024 0.01
我有一个如下所示的数据框列:
df['out_column']
0 Out 0: 0.024 Out 1: 0.005
1 Out 0: 0.024 Out 1: 0.009
2 Out 0: 0.024 Out 1: 0.009
3 Out 0: 0.024 Out 1: 0.01
4 Out 0: 0.024 Out 1: 0.011
5 Out 0: 0.017 Out 1: 0.018
6 Out 0: 0.146 Out 1: 0.081
7 Out 0: 0.001 Out 1: 0.002
8 Out 0: 0.022 Out 1: 0.009
9 Out 0: 0.012 Out 1: 0.008
如何将此列中的数据分离到具有Out 0:
和Out 1:
前面的值的其他列中?
预期结果是:
col1 col2
0 0.024 0.005
1 0.024 0.009
2 0.024 0.009
3 0.024 0.01
4 0.024 0.011
5 0.017 0.018
6 0.146 0.081
7 0.001 0.002
8 0.022 0.009
9 0.012 0.008
您可以使用 extractall
:
df[['col1', 'col2']] = df['out_column'].str.extractall(
pat=r'.*?\s+\d+:\s+([\d.]+)').unstack(-1)
输出:
out_column col1 col2
0 Out 0: 0.024 Out 1: 0.005 0.024 0.005
1 Out 0: 0.024 Out 1: 0.009 0.024 0.009
2 Out 0: 0.024 Out 1: 0.009 0.024 0.009
3 Out 0: 0.024 Out 1: 0.01 0.024 0.01
4 Out 0: 0.024 Out 1: 0.011 0.024 0.011
5 Out 0: 0.017 Out 1: 0.018 0.017 0.018
6 Out 0: 0.146 Out 1: 0.081 0.146 0.081
7 Out 0: 0.001 Out 1: 0.002 0.001 0.002
8 Out 0: 0.022 Out 1: 0.009 0.022 0.009
9 Out 0: 0.012 Out 1: 0.008 0.012 0.008
注意:如果需要,请使用 df = df.drop('out_columns', 1)
。
使用 Out 1
和 Out 2
的常规模式,您可以多次 str.extract
并使用 .
查找任何内容 *
print(df['out_column'].str.extract('Out 0: (.*) Out 1: (.*)'))
0 1
0 0.024 0.005
1 0.024 0.009
2 0.024 0.009
3 0.024 0.01