如果匹配另一个数据帧的ID,则从n个数据帧中添加值

时间:2017-10-18 05:45:04

标签: python pandas

我目前有n个具有ID和X值的数据帧(dfs [n])和一个带ID的数据帧(df)。

如果X值的ID与df的ID匹配,并且添加' X值n'我想将d值添加到df中的新列。作为列名。

for n in range(len(files)):
    if dfs[n]['ID'] == df['ID']:
        df = df.join(dfs[n]['X values'], on='ID', rsuffix = int(r))
    print(df)

我尝试过这段代码但是没有用。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

设置

dfs = [pd.DataFrame({'ID': [1, 2, 3], 'X values': list('XYZ')}) for _ in range(4)]
df = pd.DataFrame(dict(ID=[1, 2, 3]))

<强>解决方案
pd.concat

之后,您需要pd.DataFrame.set_index
df.join(
    pd.concat(
        [d.set_index('ID')['X values'] for d in dfs],
        axis=1, keys=list(range(len(dfs)))
    ), on='ID')

   ID  0  1  2  3
0   1  X  X  X  X
1   2  Y  Y  Y  Y
2   3  Z  Z  Z  Z