Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将NumPy数组与数据帧连接(联接)_Python_Pandas_Numpy_Dataframe - Fatal编程技术网

Python 将NumPy数组与数据帧连接(联接)

Python 将NumPy数组与数据帧连接(联接),python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我有一个有10行5列的熊猫数据框和一个由零组成的numpy矩阵np.zeros((10,3)) 我想将numpy矩阵连接到pandas数据帧,但我想在将numpy数组连接到pandas数据帧之前删除pandas数据帧中的最后一列 因此,我将得到一个由10行和5-1+3=7列组成的矩阵 我想我可以用 new_dataframe = pd.concat([ original_dataframe, pd.DataFrame(np.zeros((10, 3)), dtype=np.int

我有一个有10行5列的熊猫数据框和一个由零组成的numpy矩阵
np.zeros((10,3))

我想将numpy矩阵连接到pandas数据帧,但我想在将numpy数组连接到pandas数据帧之前删除pandas数据帧中的最后一列

因此,我将得到一个由10行和5-1+3=7列组成的矩阵

我想我可以用

new_dataframe = pd.concat([
    original_dataframe,
    pd.DataFrame(np.zeros((10, 3)), dtype=np.int)
], axis=1, ignore_index=True)
其中,
original_dataframe
有10行5列

在连接numpy数组之前,如何从
original\u dataframe
中删除最后一列?如何确保保留所有数据类型?

设置

np.random.seed(0)
df = pd.DataFrame(np.random.choice(10, (3, 3)), columns=list('ABC'))
df

   A  B  C
0  5  0  3
1  3  7  9
2  3  5  2

np.列\u堆栈
/
堆栈(轴=1)
/
hstack
有用(且性能良好),但不保留
df
中的列名。如果确实要将最后一列切掉,请使用
iloc
并将其切掉:

pd.DataFrame(pd.np.column_stack([
    df.iloc[:, :-1], np.zeros((df.shape[0], 3), dtype=int)]))

   0  1  2  3  4
0  5  0  0  0  0
1  3  7  0  0  0
2  3  5  0  0  0

pd.concat
您需要将数组转换为数据帧

df2 = pd.DataFrame(np.zeros((df.shape[0], 3), dtype=int), columns=list('DEF'))
pd.concat([df, df2], axis=1)
 
   A  B  C  D  E  F
0  5  0  3  0  0  0
1  3  7  9  0  0  0
2  3  5  2  0  0  0

DataFrame.assign
如果只是添加常量值,则可以使用
赋值

df.assign(**dict.fromkeys(list('DEF'), 0))

   A  B  C  D  E  F
0  5  0  3  0  0  0
1  3  7  9  0  0  0
2  3  5  2  0  0  0

您可以将原始DF<代码> NexDATAFRARAM= P.CONTAT([原语AldAdFrRAM.I[:::1),P.DataFrame(NP.0((10, 3)),dType=NP.INT)],轴= 1,IGONEORQUEST = TRUE)< /代码>无论如何,数据类型不是保留的吗?<代码> IX < /代码>现在被弃用,所以请考虑使用<代码> ILOC < /COD>或<代码> LOC 。见下文。@Jamgreen,友好的ping。你可能已经从这个问题中走了出来,但是如果你相信答案会解决这个问题,请你考虑一下它是否被接受了?谢谢
df.assign(**dict.fromkeys(list('DEF'), 0))

   A  B  C  D  E  F
0  5  0  3  0  0  0
1  3  7  9  0  0  0
2  3  5  2  0  0  0