首页 > 解决方案 > 无法在 Python Pandas 中添加具有值的多列

问题描述

我想将引用的数据添加到数据中,所以我使用

data[reference.columns]=reference

但它只创建没有值的列,我该如何添加值?

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

标签: pythonpandasdataframe

解决方案


您的两个 DataFrame 的索引不同,因此当您这样做时,data[reference.columns] = reference它会尝试对齐索引上的新列。由于 的 索引reference不在data(或仅对齐index=0)它添加列,但用 填充值NaN

看起来您想要添加多个静态列,data其中的值来自reference. 您可以分配这些:

for col in reference.columns:
    data[col] = reference[col].values[0]

这是该问题的说明。

import pandas as pd
data = pd.DataFrame({'id': [1, 2, 3, 4],
                   'val1': ['A', 'B', 'C', 'D']})
reference = pd.DataFrame({'id2': [1, 2, 3, 4],
                   'val2': ['A', 'B', 'C', 'D']})

这些具有相同的指数,范围为 0-3。

data[reference.columns] = reference

输出

   id val1  id2 val2
0   1    A    1    A
1   2    B    2    B
2   3    C    3    C
3   4    D    4    D

但是,如果这些 DataFrame 具有不同的索引(仅部分重叠):

data = pd.DataFrame({'id': [1, 2, 3, 4],
                   'val1': ['A', 'B', 'C', 'D']})
reference = pd.DataFrame({'id2': [1, 2, 3, 4],
                   'val2': ['A', 'B', 'C', 'D']})
reference.index=[3,4,5,6]

data[reference.columns]=reference

输出:

   id val1  id2 val2
0   1    A  NaN  NaN
1   2    B  NaN  NaN
2   3    C  NaN  NaN
3   4    D  1.0    A

因为只有索引值 3 是共享的。


推荐阅读