根据带有pandas的一致分隔符拆分数据框中的许多列

时间:2015-08-07 16:57:39

标签: python pandas dataframe

我一直试图解决这个问题一段时间,并且我们已经能够应用我在网上找到的任何解决方案来分离大熊猫中的列。我必须将列拆分应用于90多个一致格式化的列。

以下是我导入文件的方式:

data = pd.read_csv(location,index_col=False,header=None)

这是我的数据集的样子:

    0   1   2   3   4   5   6   7   8   9   ... 86  87  88  89  90  91  92  93  94  95
0   ITEM1   3$3 4$1 3$3 1$1 2$2 1$4 2$1 2$4 3$1 ... 3$3 2$2 3$4 3$2 3$1 1$1 3$1 2$1 1$1 3$1
1   ITEM2   3$3 4$1 3$3 1$1 2$2 4$4 1$1 4$4 3$3 ... 3$3 2$2 4$4 3$2 3$1 1$1 1$1 2$2 1$1 3$1
2   ITEM3   1$1 1$1 3$3 1$1 2$2 4$4 1$1 2$4 1$1 ... 3$3 2$2 3$3 3$2 3$1 1$1 3$1 2$1 2$2 1$1
3   ITEM4   1$1 1$1 3$3 1$1 2$2 1$1 2$2 2$4 3$3 ... 3$3 2$2 3$3 3$2 3$3 4$4 1$1 1$1 1$1 1$1
4   ITEM5   3$3 4$1 3$3 1$1 2$2 4$4 1$1 4$4 3$1 ... 3$3 2$2 4$4 3$3 1$1 1$1 1$1 2$2 1$1 3$1
5   ITEM6   1$3 4$1 3$3 1$1 2$2 1$4 2$1 2$4 1$1 ... 3$3 2$2 3$3 2$2 3$3 4$4 3$1 1$1 1$1 1$1

我想根据每个$分隔符拆分列,以便最终结果看起来如下所示(原谅格式化):

    0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  ... 101 102 103 104 105 106 107 108 109 110
0   ITEM1   3   3   4   1   3   3   1   1   2   2   1   4   2   1   2   4   3   1   ... 3   3   2   2   3   4   3   2   3   1   1   1   3   1   2   1   1   1   3   1
1   ITEM2   3   3   4   1   3   3   1   1   2   2   4   4   1   1   4   4   3   3   ... 3   3   2   2   4   4   3   2   3   1   1   1   1   1   2   2   1   1   3   1

在Python中执行此操作的最佳方法是什么?

1 个答案:

答案 0 :(得分:4)

使用regex character class [,$]作为分隔符。这将在逗号和美元符号上分割字段。因此,如果CSV location包含

ITEM1,3$3,4$1,3$3,1$1

然后

df = pd.read_csv(location, index_col=False, header=None, delimiter=r'[,$]')
print(df)

产量

       0  1  2  3  4  5  6  7  8
0  ITEM1  3  3  4  1  3  3  1  1