python- pandas-用循环连接列

时间:2016-08-21 15:07:04

标签: python pandas dataframe zip concatenation

我有一个需要连接的列列表。示例表将是:

import numpy as np
cats1=['T_JW', 'T_BE', 'T_FI', 'T_DE', 'T_AP', 'T_KI', 'T_HE']
data=np.array([random.sample(range(0,2)*7,7)]*3)

df_=pd.DataFrame(data, columns=cats1)

所以我需要得到每一行的连接(如果可能的话,每个值之间有一个空格)。我试过了:

listaFin=['']*1000
for i in cats1:
    lista=list(df_[i])
    listaFin=zip(listaFin,lista)

但是我得到了一个元组列表:

listaFin:

[((((((('', 0), 0), 1), 0), 1), 0), 1),
 ((((((('', 0), 0), 1), 0), 1), 0), 1),
 ((((((('', 0), 0), 1), 0), 1), 0), 1)]

我需要得到像

这样的东西
[0 0 1 0 1 0 1,
0 0 1 0 1 0 1,
0 0 1 0 1 0 1]

我怎样才能使用一个或更少的循环(我不想使用双循环)?

感谢。

1 个答案:

答案 0 :(得分:0)

我不认为你可以在Python中有一个空格分隔的整数列表,而不是它们在一个字符串中(我可能是错的)。话虽如此,我的答案是:

output = []
for i in range(0,df_.shape[0]):
    output.append(' '.join(str(x) for x in list(df_.loc[i])))
print(output)

输出如下所示: ['1 0 0 0 1 0 1','1 0 0 0 1 0 1','1 0 0 0 1 0 1']