我正在尝试连接 pandas 数据帧的所有列,以便最终得到包含数据帧中所有值的 1 列。以下代码执行此操作:
df2 = pd.concat([df[0], df[1], df[2], df[3], df[4], df[5], df[6], df[7]])
但我希望能够使用具有不同列数的数据框来执行此操作。当我尝试时:
dfpr2 = pd.concat([df.columns)
我收到以下错误:
“无法连接 <class 'pandas.core.indexes.range.RangeIndex>
类型的对象;只有 Series 和 DataFrame 对象有效
有办法解决这个问题吗?我尝试设置ignore_index = True,但这似乎也没有帮助。谢谢!!
最佳答案
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)
我认为 @cs95 有一篇 stackoverflow 帖子讨论了字符串。对于字符串,当在 Python 中完成计算时,它们的速度要快得多。
关于python - 连接 pandas 数据框中的所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61780382/