【问题标题】:Splitting the cells in a pandas DataFrame by whitespace用空格分割 pandas DataFrame 中的单元格
【发布时间】:2018-09-11 23:08:23
【问题描述】:

我有一个包含 10 列和 200 行的 Pandas DataFrame(我们称之为“心脏”)。每个列单元格包含由空格分隔的多个值。虽然每行有 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 列的数据框。

【问题讨论】:

  • 请提供一个包含完整输入和所需输出的最小示例。
  • 当前每个列都作为字符串读入吗?
  • @ALollz 是的,它们被作为字符串读入

标签: python pandas split transformation


【解决方案1】:

试试这个。这是一个例子。循环基本上是字符串根据空格分割列中的每个元素。 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

【讨论】:

    猜你喜欢
    • 2017-06-10
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 2016-05-12
    相关资源
    最近更新 更多