这是我为了得到你想要的东西而做的一个黑客。我还在学习数据表,所以在我完全投入其中的时候请多多包涵。
首先,将数据表转换为数据框。执行我之前列出的操作,然后将数据帧转换回数据表。Walla,您现在有了一个包含所需结果的数据表。
这就是我的做法。
from datatable import dt, f, g, by, update, join, sort
tt = dt.Frame({'a' : ['A1','A2','A3'], 'b':[100,200,300]})
df = tt.to_pandas()
df = df.join(df.a.str.extract('([a-zA-Z])([0-9])', expand=True).add_prefix('a'))
df = df.rename(columns = {'a0': 'c', 'a1': 'd'})
tt = dt.Frame(df)
tt
输出将是:
您可以拆分列并重命名字段。
import pandas as pd
df = pd.DataFrame({'a' : ['A1','A2','A3'], 'b':[100,200,300]})
print (df)
df = df.join(df['a'].str.split(r'(\d.*)', expand=True).add_prefix('a'))
df.drop('a2',axis = 1,inplace=True)
df = df.rename(columns = {'a0': 'c', 'a1': 'd'})
print (df)
输出将是:
初始 DataFrame 将是:
a b
0 A1 100
1 A2 200
2 A3 300
新的 DataFrame 将如下所示:
a b c d
0 A1 100 A 1
1 A2 200 A 2
2 A3 300 A 3
或者,您也可以使用extract
和正则表达式来完成。
import pandas as pd
df1 = pd.DataFrame({'a' : ['A1','A2','A3'], 'b':[100,200,300]})
df1 = df1.join(df1.a.str.extract('([a-zA-Z])([0-9])', expand=True).add_prefix('a'))
df1 = df1.rename(columns = {'a0': 'c', 'a1': 'd'})
print (df1)
它会给你同样的结果:
a b
0 A1 100
1 A2 200
2 A3 300
在此选项中,它不会创建需要删除的附加列
a b c d
0 A1 100 A 1
1 A2 200 A 2
2 A3 300 A 3