gpt4 book ai didi

python - 将 NumPy 数组与 pandas DataFrame 连接(加入)

转载 作者:太空狗 更新时间:2023-10-29 18:34:01 25 4
gpt4 key购买 nike

我有一个包含 10 行和 5 列的 pandas 数据框以及一个由零组成的 numpy 矩阵 np.zeros((10,3))

我想将 numpy 矩阵连接到 pandas 数据帧,但我想在将 numpy 数组连接到它之前从 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_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.column_stack/堆栈(axis=1)/hstack

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

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

有用(且高效),但不保留 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

您需要将数组转换为 DataFrame。

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

如果只是添加常量值,可以使用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

关于python - 将 NumPy 数组与 pandas DataFrame 连接(加入),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39698363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com