用whitesp拆分pandas数据帧中的单元格

2024-06-24 13:10:43 发布

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

我有一个Pandas数据帧(我们称之为“心脏”)有10列200行。每个列单元格包含多个用空格分隔的值。虽然每行有10列,每行中的值各不相同,但实际上有76个单独的值被这10行中的空格分隔开,这些值需要放入76个不同的列中。因此,一行“心脏”数据帧如下所示(总共有76个值):

column01: 1254 0 40 1 1 0 0
column02: -9 2 140 0 289 -9 -9 -9
column03: 0 -9 -9 0 12 16 84 0
column04: 0 0 0 0 150 18 -9 7
column05: 172 86 200 110 140 86 0 0
column06: 0 -9 26 20 -9 -9 -9 -9
column07: -9 -9 -9 -9 -9 -9 -9 12
column08: 20 84 0 -9 -9 -9 -9 -9
column09: -9 -9 -9 -9 -9 1 1 1
column10: 1 1 -9. -9. name

我想做的是保留我的200行,但将每列中的数据按空格分隔,最终得到200行76列的数据帧。在


Tags: 数据pandas空格心脏个值column02column01column10
1条回答
网友
1楼 · 发布于 2024-06-24 13:10:43

试试这个。这里有一个例子。循环基本上是字符串根据空格拆分列中的每个元素。Tempdf是一个临时数据帧,有许多行(在您的例子中是200),只有一个列,其元素是一个列表(在您的例子中是所有76个值)。最后一行将分解该列表,以便每个元素都放在一列中。在

如果每一行真正有76个值,它们将按顺序填充。否则,如本例所示,None将被放置在列中,因为这些行实际上没有相同数量的空格分隔元素。在

import pandas as pd
df = pd.DataFrame({'row_name': ['row01', 'row02'],
                  'text_1': ['1254 0 1 1 0', '11 21 -9. -'],
                  'text_2': ['1 1 -9. name', '1 1 -9. -9. e name'],
                  'text_3': ['176 0 0 0 -9 -9', '176 0 -99 -99 name 199  0']})
#   row_name       text_1          text_2                 text_3
#0  row01         1254 0 1         1 1 -9.         176 0 0 0 -9 -9
#1  row02         11 21 -9. -  1 1 -9. e name  176 0 -99 name 199  0

vs = pd.Series()
for col in df.columns[~df.columns.isin(['row_name'])]:
    vs = vs.append(df[col].str.split('\s+'))

tempdf = vs.groupby(vs.index).sum().to_frame()
finaldf = pd.DataFrame(tempdf[0].values.tolist())

#     0   1    2  3  4  5    6  7     8    9  10   11    12   13    14
#0  1254   0    1     1  1  -9.      176    0  0    0    -9   -9  None
#1    11  21  -9.  -  1  1  -9.  e  name  176  0  -99  name  199     0

相关问题 更多 >