我有“ 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)。
你知道是什么问题吗?
答案 0 :(得分:2)
您可以assign
将一个numpy数组作为新列。
final_df = train_df.assign(target=local_df["target"].values)
答案 1 :(得分:1)
我认为问题出在索引值不同,所以解决方案是由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)
或通过local_df
设置train_df.index
的索引:
final_df = pd.concat([train_df,
local_df["target"].set_index(train_df.index)], axis=1)
print(final_df.shape)
答案 2 :(得分:0)
如何加入?
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