Python 当concat返回值为';应用';

Python 当concat返回值为';应用';,python,pandas,Python,Pandas,我有一个奇怪的python熊猫问题,我有一个数据框new_employees,其中包含7个人的姓名。我试图从人力资源数据库中读取每个人的一些详细信息 def read_a_row(row):

我有一个奇怪的python熊猫问题,我有一个数据框new_employees,其中包含7个人的姓名。我试图从人力资源数据库中读取每个人的一些详细信息

def read_a_row(row):                                                                                                                                                                                                                                          
    return(pd.read_csv('/HRdatabase/%s/%s/logs/details.csv'%(row['forename'], row['surname']) ));                                                                                                    

output = new_employees.apply(read_a_row, axis=1)                                                                                                                                                                                                                  
不知怎的,当我执行上述代码时,我得到了以下错误:

1798     raise ValueError("Shape of passed values is %s, indices imply %s" % (
1799             tuple(map(int, [tot_items] + list(block_shape))),
 -> 1800             tuple(map(int, [len(ax) for ax in axes]))))
1801 
1802 

ValueError: Shape of passed values is (7,), indices imply (7, 6)
有人知道我哪里弄错了吗?如果我不让read_a_row函数返回csv_文件,而是打印它,那么根本就没有错误

我觉得这真的很奇怪

有人能帮忙吗


谢谢

您要做的基本上就是加入。您希望将这些表与员工的姓名和其他详细信息连接起来。如果我是你,我会怎么做 将整个HR数据库加载到一个数据框中,并将其与新的\u employees数据框连接

示例(hr数据帧,hr_df)

新的"基本法":

    name   surname
0   Peter  Parker
1  Poison     Ivy
现在您有两个选择: 如果数据帧具有相同的列名 你可以做:

pd.merge(new_df,hr_df,on=["surname","name"])
其他:

pd.merge(new_df,hr_df,left_on=["surname","name"],right_on=["surname","name"]) #change the column names
您应该获得所需的:

      name surname haircolor
0   Peter  Parker     black
1  Poison     Ivy       red

apply函数试图在您的案例中返回整个数据帧。你不能真的那样做。可以使用“应用”将框架的列或行映射到行/列或标量。打印很好,但这并不奇怪。。。
      name surname haircolor
0   Peter  Parker     black
1  Poison     Ivy       red