如何将字符串转换为数据框,并指定列数?

bjo*_*man 2 python string dataframe pandas

我有一个字符串,如下所示:

string = "entity precision recall f1-score support B-EXPERIENCE 0.578 0.488 0.529 244 I-EXPERIENCE 0.648 0.799 0.716 399 L-EXPERIENCE 0.850 0.697 0.766 244 U-EXPERIENCE 0.000 0.000 0.000 9 B-LANGUAGE 0.000 0.000 0.000 1 I-LANGUAGE 0.000 0.000 0.000 1 L-LANGUAGE 0.000 0.000 0.000 1 U-LANGUAGE 0.788 0.904 0.842 292 B-PROGRAMMING 0.480 0.433 0.455 141 I-PROGRAMMING 0.524 0.328 0.404 67 L-PROGRAMMING 0.261 0.255 0.258 141 U-PROGRAMMING 0.904 0.825 0.862 2010 micro_avg 0.785 0.746 0.765 3550 macro_avg 0.419 0.394 0.403 3550 weighted_avg 0.787 0.746 0.763 3550"
Run Code Online (Sandbox Code Playgroud)

将其转换为以下格式的熊猫数据框的最简单方法是什么?我正在寻找创建一个5列的数据框,第一列的标题可以用“实体”填充。第一列包含实体的名称。

在此处输入图片说明

Sco*_*ton 5

您可以尝试以下方法:

import pandas as pd
s1 = "entity precision recall f1-score support B-EXPERIENCE 0.578 0.488 0.529 244 I-EXPERIENCE 0.648 0.799 0.716 399 L-EXPERIENCE 0.850 0.697 0.766 244 U-EXPERIENCE 0.000 0.000 0.000 9 B-LANGUAGE 0.000 0.000 0.000 1 I-LANGUAGE 0.000 0.000 0.000 1 L-LANGUAGE 0.000 0.000 0.000 1 U-LANGUAGE 0.788 0.904 0.842 292 B-PROGRAMMING 0.480 0.433 0.455 141 I-PROGRAMMING 0.524 0.328 0.404 67 L-PROGRAMMING 0.261 0.255 0.258 141 U-PROGRAMMING 0.904 0.825 0.862 2010 micro_avg 0.785 0.746 0.765 3550 macro_avg 0.419 0.394 0.403 3550 weighted_avg 0.787 0.746 0.763 3550"

s = pd.Series(s1.split(' '))
df = pd.DataFrame(s[5:].to_numpy().reshape(-1,5), columns=s[:5])
Run Code Online (Sandbox Code Playgroud)

输出:

           entity precision recall f1-score support
0    B-EXPERIENCE     0.578  0.488    0.529     244
1    I-EXPERIENCE     0.648  0.799    0.716     399
2    L-EXPERIENCE     0.850  0.697    0.766     244
3    U-EXPERIENCE     0.000  0.000    0.000       9
4      B-LANGUAGE     0.000  0.000    0.000       1
5      I-LANGUAGE     0.000  0.000    0.000       1
6      L-LANGUAGE     0.000  0.000    0.000       1
7      U-LANGUAGE     0.788  0.904    0.842     292
8   B-PROGRAMMING     0.480  0.433    0.455     141
9   I-PROGRAMMING     0.524  0.328    0.404      67
10  L-PROGRAMMING     0.261  0.255    0.258     141
11  U-PROGRAMMING     0.904  0.825    0.862    2010
12      micro_avg     0.785  0.746    0.765    3550
13      macro_avg     0.419  0.394    0.403    3550
14   weighted_avg     0.787  0.746    0.763    3550
Run Code Online (Sandbox Code Playgroud)

细节:

用于split使用空格作为定界符来分割字符串,因此要求更改列标题以从列标题中删除空格。

使用构造函数创建pd.Series,然后使用构造函数和索引切片创建pd.DataFrame。 to_numpy创建一个numpy数组,然后reshape使用-1表示行数,使用5表示列数。