小编smi*_*ley的帖子

在单独的向量中基于索引处的值合并列

我有一个像这样的矩阵:

> y
     [,1] [,2] [,3] [,4]
[1,]   17   14    5    8
[2,]    7    2   17    2
[3,]   10   18    6    6
[4,]    6   11    4   11
[5,]    5    9    4    9
Run Code Online (Sandbox Code Playgroud)

和一个矢量

> group
[1] 1 2 2 3
Run Code Online (Sandbox Code Playgroud)

组向量表示列1在组1中,列2和3在组2中,列3在组3中.我想组合y中的列(通过添加),以便分配给特定组的所有列都是加在一起,即我得到:

     [,1] [,2] [,3]
[1,]   17   19    8
[2,]    7   19    2
[3,]   10   24    6
[4,]    6   15   11
[5,]    5   13    9
Run Code Online (Sandbox Code Playgroud)

我一直在搞乱子集,合并和Reduce,但我真的没有到达任何地方.

r

7
推荐指数
1
解决办法
61
查看次数

使用pandas read_csv时,仅将分隔符限制为某些选项卡

我正在使用read_csv将一些制表符分隔的数据读入pandas Dataframe,但我在列数据中出现了标签,这意味着我不能只使用"\ t"作为分隔符.具体来说,每行中的最后一个条目是一组制表符分隔的可选标记,它们匹配[A-Za-z] [A-Za-z0-9]:[A-Za-z] :. +没有任何保证将有多少标签或将存在哪些标签,并且不同的标签可以出现在不同的行上.示例数据如下所示(所有空格都是我数据中的选项卡):

C42TMACXX:5:2316:15161:76101    163 1   @<@DFFADDDF:DD  NH:i:1  HI:i:1  AS:i:200    nM:i:0
C42TMACXX:5:2316:15161:76101    83  1   CCCCCACDDDCB@B  NH:i:1  HI:i:1  nM:i:1
C42TMACXX:5:1305:26011:74469    163 1   CCCFFFFFHHHHGJ  NH:i:1  HI:i:1  AS:i:200    nM:i:0
Run Code Online (Sandbox Code Playgroud)

我建议尝试将标签作为单个列读取,我想我可以通过传递分隔符的正则表达式来完成此操作,该分隔符排除了在标签上下文中出现的标签.

关于http://www.rexegg.com/regex-best-trick.html,我为此写了以下正则表达式:[A-Za-z] [A-Za-z0-9]:[A-Za-z] :[^ \吨] + \吨..:|(\吨).我在一个在线正则表达式测试器上测试它,它似乎只是匹配我想要的选项卡作为分隔符.

但是当我跑步的时候

df = pd.read_csv(myfile.txt, sep=r"[A-Za-z][A-Za-z0-9]:[A-Za-z]:[^\t]+\t..:|(\t)", 
                 header=None, engine="python")
print(df)
Run Code Online (Sandbox Code Playgroud)

我得到这个数据的以下输出:

                          0       1    2   3   4   5               6   7   8 \
0  C42TMACXX:5:2316:15161:76101  \t  163  \t   1  \t  @<@DFFADDDF:DD  \t NaN   
1  C42TMACXX:5:2316:15161:76101  \t   83  \t   1  \t  CCCCCACDDDCB@B  \t NaN   
2  C42TMACXX:5:1305:26011:74469  \t …
Run Code Online (Sandbox Code Playgroud)

python regex pandas

5
推荐指数
1
解决办法
199
查看次数

标签 统计

pandas ×1

python ×1

r ×1

regex ×1