Python 将NumPy数组与数据帧连接(联接)
我有一个有10行5列的熊猫数据框和一个由零组成的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
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