Python 循环一列中的多个值

Python 循环一列中的多个值,python,pandas,numpy,Python,Pandas,Numpy,有人能告诉我如何在一个数据帧列中循环多个值吗 例如: col1 col2 High street qwe.723,qwe.2,qwe.17,qwe.1000,qwe.23 Must street qwe.34,qwe.17,qwe.1000,qwe.23 我希望有以下输出: High street qwe.723 High street qwe.2 High street qwe.17 High street qwe.1000 High street qwe.23 Must stree

有人能告诉我如何在一个数据帧列中循环多个值吗

例如:

col1    col2
High street qwe.723,qwe.2,qwe.17,qwe.1000,qwe.23
Must street qwe.34,qwe.17,qwe.1000,qwe.23
我希望有以下输出:

High street
qwe.723
High street
qwe.2
High street
qwe.17
High street
qwe.1000
High street
qwe.23

Must street
qwe.34
Must street
qwe.17
Must street
qwe.1000
Must street
qwe.23
我的尝试:

lines = open('file.txt','r')
for line in lines:
    line=line.strip().split('\t')
    vals=line[1].split(',')
    for val in vals:
        print(line[0],'\n',val)
试试这个:

In [136]: df
Out[136]:
          col1                                  col2
0  High street  qwe.723,qwe.2,qwe.17,qwe.1000,qwe.23
1  Must street         qwe.34,qwe.17,qwe.1000,qwe.23

In [137]: df.set_index('col1').col2.str.split(',', expand=True).stack().reset_index(level=1, drop=1).to_frame('col2').reset_index().stack()
     ...:
Out[137]:
0  col1    High street
   col2        qwe.723
1  col1    High street
   col2          qwe.2
2  col1    High street
   col2         qwe.17
3  col1    High street
   col2       qwe.1000
4  col1    High street
   col2         qwe.23
5  col1    Must street
   col2         qwe.34
6  col1    Must street
   col2         qwe.17
7  col1    Must street
   col2       qwe.1000
8  col1    Must street
   col2         qwe.23
dtype: object
我相信一定有更好的方法来做到这一点…

另一种方法:

(df.set_index('col1')
   .col2.str.split(',', expand=True)
   .stack()
   .reset_index(level=-1, drop=True)
   .to_csv('output.txt',sep='\n')

因为我在玩
cytoolz
numpy

超快

import cytoolz

c2 = np.core.defchararray.split(df.col2.values.astype('str'), ',')
col1 = df.col1.values.repeat([len(c) for c in c2.tolist()])
col2 = list(cytoolz.concat(c2))
np.stack([col1, col2]).ravel('F')

array(['High street', 'qwe.723', 'High street', 'qwe.2', 'High street',
       'qwe.17', 'High street', 'qwe.1000', 'High street', 'qwe.23',
       'Must street', 'qwe.34', 'Must street', 'qwe.17', 'Must street',
       'qwe.1000', 'Must street', 'qwe.23'], dtype=object)

时间测试


非常感谢各位提供了很好的解决方案!。问题解决了。