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

标签 python pandas

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

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

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)

我尝试了这段代码,但不起作用。

感谢您的帮助!

最佳答案

设置

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

解决方案
您需要在 pd.DataFrame.set_index 后进行 pd.concat

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
<小时/>

关于python - 如果与另一个数据帧的 ID 匹配,则添加 n 个数据帧中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46803527/

相关文章:

python - 如何以最佳(Pythonic)方式编写这段代码?

python - Pandas 高效 VWAP 计算

python - 使用 importlib 导入模块的别名

python - 如何在 kubeflow 管道中定义管道级卷以跨组件共享?

python - Flask session 不会在 Angular App 请求之间持续存在

python - 带有 .loc 的多索引数据帧中的数学运算

python - 根据从末尾开始的列值的计数过滤 pandas 数据框

Python - 替换CSV文件中一行的值

python - 更正 pb 文件以将 Tensorflow 模型移动到 ML.NET

python - 转换格式为 mm :ss to a time format pandas 的对象数据类型列