EmE*_*mEs 5 python string-concatenation multiple-columns dataframe pandas
我有一系列特定的数据集,它们采用以下一般形式:
import pandas as pd
import random
df = pd.DataFrame({'n': random.sample(xrange(1000), 3), 't0':['a', 'b', 'c'], 't1':['d','e','f'], 't2':['g','h','i'], 't3':['i','j', 'k']})
Run Code Online (Sandbox Code Playgroud)
tn列的数量(t0, t1, t2 ... tn)因数据集而异,但始终小于 30。我的目标是合并每一行的tn列的内容,以便获得此结果(请注意,为了便于阅读,我需要保留元素之间的空格):
df['result'] = df.t0 +' '+df.t1+' '+df.t2+' '+ df.t3
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好。这段代码可能很简单,但是一旦我收到另一个数据集,它就会变得笨拙和不灵活,其中tn列的数量增加了。这就是我的问题所在:
是否有其他语法可以跨多列合并内容?与数字列无关的东西,类似于:
df['result'] = ' '.join(df.ix[:,1:])
Run Code Online (Sandbox Code Playgroud)
基本上我想实现与下面链接中的 OP 相同的效果,但字符串之间有空格: R - 跨数据框的特定列按行连接
这是一个稍微替代的解决方案:
In [57]: df['result'] = df.filter(regex=r'^t').apply(lambda x: x.add(' ')).sum(axis=1).str.strip()
In [58]: df
Out[58]:
n t0 t1 t2 t3 result
0 92 a d g i a d g i
1 916 b e h j b e h j
2 363 c f i k c f i k
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3543 次 |
| 最近记录: |