使用for循环创建一个DF时,Pandas concat无法正常工作

时间:2018-12-13 12:14:04

标签: python pandas concat

我正在尝试连接两个Pandas数据帧,其中一个是使用for循环创建的。对于某些原因,pd.concat不会按行期望的那样连接。

以下代码说明了该问题:

datasort = [143.477514,112.951071,869.627662,193.471612,140.428981,301.053040,190.684404,180.142223,127.569191,404.871493]

sample_1 = pd.DataFrame(np.random.choice(datasort,(8,10)))
samples_2 = pd.DataFrame()

for t in np.arange(10):

    samples_2[str(t)] = np.random.choice(datasort,2)

samples_3=pd.concat([samples_2,sample_1],ignore_index=True)

该代码生成的10x20混合字符集具有很多NaN,而不是我期望的10x10。

有人可以指出我显然缺少的东西吗?

1 个答案:

答案 0 :(得分:3)

问题是您将列转换为字符串,所以DataFrame无法对齐,因为不同的列名:

for t in np.arange(10):
    #casting to string 
    samples_2[str(t)] = np.random.choice(datasort,2)

print (sample_1.columns)
RangeIndex(start=0, stop=10, step=1)
print (samples_2.columns)
Index(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], dtype='object')

解决方案:

for t in np.arange(10):
    samples_2[t] = np.random.choice(datasort,2)