将数据帧列拆分为相等的子长度和 return 新数据帧
Split dataframe column into equal sublengths and return the new dataframe
我有一个如下所示的数据框,我想将字符串列拆分成行,每行具有 4 个字符的相等字符串。
date, string
2002-06-01, 12345678
2002-06-02, 87654321
预期输出
date, string
2002-06-01, 1234
2002-06-01, 5678
2002-06-02, 8765
2002-06-02, 4321
我试过这里给出的例子:
from itertools import chain
def chainer(s):
return list(chain.from_iterable(s.str.split(df['string'], 4)))
lens = df['string'].str.split(df['string'], 4).map(len)
res = pd.DataFrame({'date': np.repeat(df['date'], lens), 'string': chainer(df['string'])})
但我收到错误:TypeError: unhashable type: 'Series'。我该如何解决这个问题。
爆炸块
df.assign(
string=[
[x[i:i+4] for i in range(0, len(x), 4)]
for x in df.string]
).explode('string')
date string
0 2002-06-01 1234
0 2002-06-01 5678
1 2002-06-02 8765
1 2002-06-02 4321
这是另一种方式:
df.assign(string = df['string'].str.findall(r'\d{4}')).explode('string')
输出:
date string
0 6/1/2002 1234
0 6/1/2002 5678
1 6/2/2002 8765
1 6/2/2002 4321
我有一个如下所示的数据框,我想将字符串列拆分成行,每行具有 4 个字符的相等字符串。
date, string
2002-06-01, 12345678
2002-06-02, 87654321
预期输出
date, string
2002-06-01, 1234
2002-06-01, 5678
2002-06-02, 8765
2002-06-02, 4321
我试过这里给出的例子:
from itertools import chain
def chainer(s):
return list(chain.from_iterable(s.str.split(df['string'], 4)))
lens = df['string'].str.split(df['string'], 4).map(len)
res = pd.DataFrame({'date': np.repeat(df['date'], lens), 'string': chainer(df['string'])})
但我收到错误:TypeError: unhashable type: 'Series'。我该如何解决这个问题。
爆炸块
df.assign(
string=[
[x[i:i+4] for i in range(0, len(x), 4)]
for x in df.string]
).explode('string')
date string
0 2002-06-01 1234
0 2002-06-01 5678
1 2002-06-02 8765
1 2002-06-02 4321
这是另一种方式:
df.assign(string = df['string'].str.findall(r'\d{4}')).explode('string')
输出:
date string
0 6/1/2002 1234
0 6/1/2002 5678
1 6/2/2002 8765
1 6/2/2002 4321