熊猫:将文本分成两部分,长度不等

时间:2014-12-07 17:50:17

标签: python string pandas substring

我正在寻找pandas中的子字符串功能:给定一系列位置,我想从每行[0:pos_i]中选择子串i

>>> text = pd.Series(['123456789', '987654321'])
0    123456789
1    987654321
dtype: object

>>> pos = pd.Series([3,6])
0    3
1    6
dtype: int64

输出应为:

>>> pd.Series(['123', '987654'])
0    123
1    987654
dtype: object

更好的是在数据帧中分成两列:

>>> pd.DataFrame([['123', '456789'], ['987654', '321']])
        0       1
0     123  456789
1  987654     321

1 个答案:

答案 0 :(得分:1)

仅用于拆分为2件的简单案例:

tokens = []
for i, row in text.iteritems():
    tokens.append((row[:pos[i]], row[pos[i]:]))

df = pd.DataFrame(tokens) 

或写成列表理解:

df = pd.DataFrame([(row[:pos[i]], row[pos[i]:]) for i, row in text.iteritems()])

给出:

>>> df
        0       1
0     123  456789
1  987654     321

[2 rows x 2 columns]