向不存在的DataFrame列添加行

2024-04-25 05:46:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我想拆分数据帧中特定列中的字符串,从两个新序列中获取数字,并将值赋给四个新列。你知道吗

在进行任何修改之前,Saison上的“分数”列如下所示:

0    \n3:2 (1:1) \n
1    \n0:2 (0:2) \n
2    \n1:1 (1:0) \n
3    \n1:1 (1:1) \n
4    \n2:0 (2:0) \n

我想要的输出是:

  Tore_Heim Tore_Auswärts Tore_Heim_HZ Tore_Auswärts_HZ
0         3             2            1                1
1         0             2            0                2
2         1             1            1                0
3         1             1            1                1
4         2             0            2                0

我用列表理解找到了一个解决方案如下:

scores["Tore_Heim"] = pd.DataFrame([re.findall("\d+", scores[0][i]) for i in range(len(scores))]).loc[:, 0]
scores["Tore_Auswärts"] = pd.DataFrame([re.findall("\d+", scores[0][i]) for i in range(len(scores))]).loc[:, 1]
scores["Tore_Heim_HZ"] = pd.DataFrame([re.findall("\d+", scores[1][i]) for i in range(len(scores))]).loc[:, 0]
scores["Tore_Auswärts_HZ"] = pd.DataFrame([re.findall("\d+", scores[1][i]) for i in range(len(scores))]).loc[:, 1]

第二个问题是第二行和第三行是否可以合并为一行。你知道吗


Tags: inredataframeforlenrangelocrts
1条回答
网友
1楼 · 发布于 2024-04-25 05:46:12

您可以使用str.extractall+unstack

df
              Col
0  \n3:2 (1:1) \n
1  \n0:2 (0:2) \n
2  \n1:1 (1:0) \n
3  \n1:1 (1:1) \n
4  \n2:0 (2:0) \n

v = df.Col.str.extractall('(\d+)', flags=re.M).unstack()
v.columns = ['Tore_Heim', 'Tore_Auswärts', 'Tore_Heim_HZ', 'Tore_Auswärts_HZ']
v

  Tore_Heim Tore_Auswärts Tore_Heim_HZ Tore_Auswärts_HZ
0         3             2            1                1
1         0             2            0                2
2         1             1            1                0
3         1             1            1                1
4         2             0            2                0

若要转换为数字类型,请应用pd.to_numeric跨列-

v = v.apply(pd.to_numeric, errors='coerce')

或者,执行astype转换-

v = v.astype(float) # .astype(int) will work if you don't have NaNs in your data 

相关问题 更多 >