我正在尝试遍历熊猫列表以填充另一列
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}])
答案 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']]