我正在寻找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
答案 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]