簡體   English   中英

使用 pandas 連接向數據框添加一列

[英]add a column to data frame using pandas concatenation

我有“train_df”數據框,其中:

print(train_df.shape)

返回 (997, 600)。

現在我想將一列連接到此數據框,其中:

print(len(local_df["target"]))

返回 997。

所以看起來尺寸一切正常。

但問題是:

final_df = pd.concat([train_df, local_df["target"]], axis=1)
print(final_df.shape)

返回 (1000, 601)。 而它應該是 (997, 601)。

你知道問題出在哪里嗎?

我認為問題出在不同的索引值上,所以解決方案是通過reset_index和參數drop=True創建相同的:

final_df = pd.concat([train_df.reset_index(drop=True), 
                     local_df["target"].reset_index(drop=True)], axis=1)
print(final_df.shape)

或者通過train_df.index設置local_dftrain_df.index

final_df = pd.concat([train_df, 
                     local_df["target"].set_index(train_df.index)], axis=1)
print(final_df.shape)

您可以assign numpy 數組assign為新列。

final_df = train_df.assign(target=local_df["target"].values)

對於 >= 0.24 的熊貓,

final_df = train_df.assign(target=local_df["target"].to_numpy())

加盟怎么樣?:

import pandas as pd
df=pd.DataFrame({'a':[1,2,3],'b':[4,5,6]})
df2=pd.DataFrame({'c':[232,543,562]})
print(df.reset_index(drop=True).join(df2.reset_index(drop=True), how='left'))

輸出:

   a  b    c
0  1  4  232
1  2  5  543
2  3  6  562

不確定這是否最有效

從另一個具有此列y的 dataframe df2向 dataframe df添加一個新列y

 df = df.assign(y=df2["y"].reset_index(drop=True))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM