遍历熊猫列表

时间:2020-05-19 15:24:36

标签: python pandas

我正在尝试遍历熊猫列表以填充另一列

import pandas

df = pandas.DataFrame([{'A': [5, 6, 7], 'B': ""},
               {'A': [3, 4, 7], 'B': ""},
               {'A': [3, 0, 4], 'B': ""}])

我尝试过:

def fill_row(df):

    for elmts in range(len(df["A"])):
        if elmts == 4:
            df["B"] == 4
        else:
            df["B"] == 0

    return df

df["B"] = df["A"].apply(fill_row)

我的输出:

TypeError:列表索引必须是整数或切片,而不是str

好的输出:

df = pandas.DataFrame([{'A': [5, 6, 7], 'B': 0},
               {'A': [3, 4, 7], 'B': 4},
               {'A': [3, 4, 4], 'B': 4}])

2 个答案:

答案 0 :(得分:3)

您可以在1行中完成该操作:

df['B'] = df['A'].apply(lambda x: 4 if 4 in x else 0)
print(df)

           A  B
0  [5, 6, 7]  0
1  [3, 4, 7]  4
2  [3, 0, 4]  4

答案 1 :(得分:1)

您可以在0.25+大熊猫上使用explode

df['B'] = df['A'].explode().eq(4).any(level=0).astype(int) * 4

或者只是一个简单的列表理解:

df['B'] = [4 if 4 in x else 0 for x in df['A']]