【发布时间】:2021-10-10 10:37:28
【问题描述】:
我想按级别在线添加值。如果我在第 0 行的第 1 列中找到除 0 以外的值,则整行必须包含不同的值,如我的示例中所述。我不确定如何解决这个问题。如果你有什么想法
输入:
import pandas as pd
data = {
'Level1 - Code' : [0, 0, 0, 2],
'Level2 - Code' : [0, 1, 0, 0],
'Level3 - Code' : [2, 0, 0, 0],
'Level4 - Code' : [0, 0, 0, 0]
}
df = pd.DataFrame(data)
print(df)
输出:
data = {
'Level1 - Code' : [0, 0, 0, 2],
'Level2 - Code' : [0, 1, 0, 2],
'Level3 - Code' : [2, 1, 0, 2],
'Level4 - Code' : [2, 1, 0, 2]
}
df_output = pd.DataFrame(data)
print(df_output)
我尝试这样做:
def f(x):
lst_value = list(x.values)
if 2 in lst_value:
index = lst_value.index(2)
lst_value[index:] = [2] * len(lst_value[index:])
return pd.Series(lst_value, index = list(x.index))
df.apply(lambda x: f(x), axis = 1)
谢谢,
【问题讨论】:
标签: python pandas lambda apply