Python combine 2000+;将csv列转换为单个列

Python combine 2000+;将csv列转换为单个列,python,pandas,numpy,Python,Pandas,Numpy,我试图将多列的值合并到一列中。假设我有一个包含以下数据的csv col1,col2,col3,col4 1,2,3,4 6,2,4,6 2,5,6,2 我希望它成为一列,其中的值由空格分隔 col1 1 2 3 4 6 2 4 6 2 5 6 2 列数为2000+所以静态连接列是不行的 我不知道你为什么想要这样的设计。但您可以跨axis=1 df.astype(str).agg(' '.join, 1).to_frame('col') 我会尝试使用熊猫。这将查找所有列名,然后在所有列中为

我试图将多列的值合并到一列中。假设我有一个包含以下数据的csv

col1,col2,col3,col4
1,2,3,4
6,2,4,6
2,5,6,2
我希望它成为一列,其中的值由空格分隔

col1
1 2 3 4
6 2 4 6
2 5 6 2

列数为2000+所以静态连接列是不行的

我不知道你为什么想要这样的设计。但您可以跨
axis=1

df.astype(str).agg(' '.join, 1).to_frame('col')


我会尝试使用熊猫。这将查找所有列名,然后在所有列中为每行计算值,并将其另存为新的dataframe

import pandas as pd
df = pd.read_csv('test.csv')
cols = df.columns
df = df[cols].apply(lambda row: ' '.join(row.values.astype(str)), axis=1)
此csv文件的输出

c1,c2,c3
1,2,3
4,5,6
7,8,9

其中,['c1','c2','c3']是所有列名称的连接。

设置:

import numpy as np
import pandas as pd

#generating random int dataframe
df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
第一宗个案(由专人处理):

第二种情况(一般):


希望我能帮上忙。

这能回答您的问题吗?我有2k+列的记录,我想将我的记录存储在数据库中。在查询数据库id之前,如果想将列连接到一个字符串中,那么执行
df[df.columns]
是没有意义的-这是多余的,只需使用
df
。另外,最好是一次生成整个
df.astype(str)
,而不是对
应用程序中的每个系列都进行部分生成。最后,无需使用
行将pandas系列转换为Numpy数组。值
-只需立即使用
。@rafaelc您是对的。。我只是在使用这个解决方案时遇到了另一个问题。它将使用col1作为索引。即使这可能有效,它也会非常慢。避免循环通过
df
并使用
iloc[:,I]
访问每一行-这违背了库最初构建的原因(没有循环!)
Index(['c1', 'c2', 'c3'], dtype='object')
0    1 2 3
1    4 5 6
2    7 8 9
import numpy as np
import pandas as pd

#generating random int dataframe
df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
str_df1 = df.iloc[:, 0].apply(str) + " " + df.iloc[:, 1].apply(str) + " " + df.iloc[:, 2].apply(str) + " " + df.iloc[:, 3].apply(str)
str2_df = df.iloc[:, 0].apply(str)
for i in range(1, df.shape[1]):
  str2_df += " " + df.iloc[:, i].apply(str)