【发布时间】:2020-07-14 02:25:32
【问题描述】:
我想将 pandas 数据框或 numupy ndarray 中的字符串类型的列连接到最后一列,如下所示:
a b c a b c d
---------- ---> ---------------
a b c a b c a_b_c
d e f d e f d_e_f
g h i g h i g_h_i
我能想到两个有代表性的选项:
# Compose data
a = ['a','b','c']
b = ['d','e','f']
c = ['g','h','i']
pdf = pd.DataFrame([a,b,c], columns=['a','b','c'])
# One option
%%timeit
pdf.loc[:,'d'] = [i for i in map(lambda x: '_'.join([x.a, x.b, x.c]), pdf.itertuples())]
>>>1.08 ms ± 4.11 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
# Another option
%%timeit
tmp=[]
for i in pdf.itertuples():
tmp.append('_'.join([i.a, i.b, i.c]))
pdf.loc[:,'d'] = tmp
>>>1.08 ms ± 5.54 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
我知道数据可能太少,看不出这些方法之间有什么区别,但我的问题是:我可以调用 numpy 或 pandas 中内置的更智能的方法吗? 另外,我想到的这两种方法有什么问题吗?
谢谢!
【问题讨论】:
-
根据我的经验和知识...... pandas 在下面使用 numpy,因此,pandas 增加了操作的开销。使用直接 numpy 与 pandas 相比,几乎所有操作都更快。