如果列表中的值不存在于 DF 中,并且在 Python Pandas 的 DF 中的其他列中定义了值,如何将列表中的值添加为 DataFrame 中的一行?

问题描述 投票:0回答:2

我在 Python 中有 Pandas DataFrame,如下所示:

示例数据:

COL1  | COL2 | COL3
------|------|-------
var1  | xxx  | 20
var2  | xxx  | 10
var3  | yyy  | 10

我有如下列表:

list_1 = ["var1", "var5"]

要求:

我需要

  1. 仅当 list_1 的值不存在于 DataFrame 的“COL1”中时,才将
    list_1
    的值作为行添加到 DataFrame 中的“COL1”
  2. 在列表中的每个添加的“COL1”值中,我需要在“COL2”中具有值“yyy”,在“COL3”中具有值“10”

欲望输出:

因此,基于我的示例 DataFrame 和

list_1
:

,我需要类似下面的内容
COL1  | COL2 | COL3
------|------|-------
var1  | xxx  | 20
var2  | xxx  | 10
var3  | yyy  | 10
var5  | yyy  | 10

如何在 Python Pandas 中做到这一点?

python pandas dataframe list
2个回答
2
投票

一种方法是遍历列表并调用追加,例如:

for elem in list_1:
    if elem not in df["COL1"].values:
        df = df.append({"COL1": elem, "COL2": "yyy", "COL3": 10}, ignore_index=True)

1
投票

您可以结合使用集合操作

concat

out = pd.concat([df, pd.DataFrame({'COL1': list(set(list_1).difference(df['COL1']))}
                                 ).assign(COL2='yyy', COL3=10)])

输出:

   COL1 COL2  COL3
0  var1  xxx    20
1  var2  xxx    10
2  var3  yyy    10
0  var5  yyy    10
© www.soinside.com 2019 - 2024. All rights reserved.