Python 连接数据帧中的所有列
我正在尝试连接数据帧的所有列,以便最终得到一列,其中包含数据帧中的所有值。以下代码执行此操作:Python 连接数据帧中的所有列,python,pandas,concat,Python,Pandas,Concat,我正在尝试连接数据帧的所有列,以便最终得到一列,其中包含数据帧中的所有值。以下代码执行此操作: df2 = pd.concat([df[0], df[1], df[2], df[3], df[4], df[5], df[6], df[7]]) 但我希望能够对具有不同列数的数据帧执行此操作。当我尝试时: dfpr2=pd.concat([df.columns) 我得到以下错误: 无法连接类型为IIUCdf.astype(str.sum)(axis=1)的对象 如果需要自定义分隔符,请使用.agg
df2 = pd.concat([df[0], df[1], df[2], df[3], df[4], df[5], df[6], df[7]])
但我希望能够对具有不同列数的数据帧执行此操作。当我尝试时:
dfpr2=pd.concat([df.columns)
我得到以下错误:
无法连接类型为IIUCdf.astype(str.sum)(axis=1)的对象
如果需要自定义分隔符,请使用.agg
df.astype(str).agg('|'.join,axis=1)
0 A|0|2019-01-10
1 B|1|2020-01-10
2 C|2|2021-01-10
这是一种连接列值的简单方法
df1 = df['1st Column Name'] + df['2nd Column Name'] + ...
我认为@cs95有一篇关于字符串的stackoverflow帖子。对于字符串,在Python中进行计算时,它们的速度要快得多。快速问题:如何将sum
与定界符结合起来?太棒了,干杯。尽管我感觉agg
的性能不如sum
,但MarkWang字符串方法通常都是缓慢,但我同意,agg将比sum
慢,但我还没有测试过它。通常,您希望对所有列进行压缩,以创建某种代理键,因此,更新表时必须使用它
df1 = df['1st Column Name'] + df['2nd Column Name'] + ...
Timing for different methods :
%timeit df.iloc[:,0].str.cat(df.iloc[:,1:].astype(str),',')
880 µs ± 28.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%timeit df.astype(str).agg('|'.join,axis=1)
1.45 ms ± 39 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%timeit df.astype(str).sum(axis=1)
562 µs ± 11.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%timeit [','.join(ent) for ent in df.astype(str).to_numpy()]
350 µs ± 6.48 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)