Pandas 熊猫:重新设置数据的基础,以特定大小的第一个值开始?

Pandas 熊猫:重新设置数据的基础,以特定大小的第一个值开始?,pandas,Pandas,我有一个如下所示的数据帧: df = pd.DataFrame(data=d) d = [ { "name": "Bob", "1/1/20": 10, "1/2/20": 24, "1/3/20": 38 }, { "name": "Charlie", "1/1/20": 0, "1/2/20": 0, "1/3/20": 5 }, { "name": "Helen", "1/1/20": 4, "1/2/20": 14, "1/3/20": 24 }, { "

我有一个如下所示的数据帧:

df = pd.DataFrame(data=d)
d = [
    { "name": "Bob", "1/1/20": 10, "1/2/20": 24, "1/3/20": 38 },
    { "name": "Charlie", "1/1/20": 0, "1/2/20": 0, "1/3/20": 5 },
    { "name": "Helen", "1/1/20": 4, "1/2/20": 14, "1/3/20": 24 },
    { "name": "Sarah", "1/1/20": 2, "1/2/20": 4, "1/3/20": 11 }
]
name     day1     day2     day2
Bob      10       24       38
Charlie  
Helen    14       24
Sarah    11
我想重新确定这些数据的基础,因此对于每个人来说,它从值大于10的第一天开始

我还想重命名这些列,使它们相对于值大于10的第一天,而不是绝对天

换句话说,我希望输出数据帧如下所示:

df = pd.DataFrame(data=d)
d = [
    { "name": "Bob", "1/1/20": 10, "1/2/20": 24, "1/3/20": 38 },
    { "name": "Charlie", "1/1/20": 0, "1/2/20": 0, "1/3/20": 5 },
    { "name": "Helen", "1/1/20": 4, "1/2/20": 14, "1/3/20": 24 },
    { "name": "Sarah", "1/1/20": 2, "1/2/20": 4, "1/3/20": 11 }
]
name     day1     day2     day2
Bob      10       24       38
Charlie  
Helen    14       24
Sarah    11
这在熊猫身上可能吗

更新:也许我应该把它分解成更小的任务:

  • 按行,提取100以上所有值的数组
  • 对于每一行,将其附加到一个新的数组数组中,并右键填充空值
也许最好不要使用熊猫?

IIUC

df.set_index('name', inplace=True)
df.where(df >= 10).stack().to_frame('Value'). \
    assign(Day=lambda x: x.groupby(level=0).cumcount() + 1). \
    reset_index(level=0).pivot('name', 'Day', 'Value').add_prefix('Day').reindex(df.index)
Out[37]: 
Day      Day1  Day2  Day3
name                     
Bob      10.0  24.0  38.0
Charlie   NaN   NaN   NaN
Helen    14.0  24.0   NaN
Sarah    11.0   NaN   NaN

day1
day2
等是什么意思?在这种情况下,您能否使其与提供的示例数据集一致。另外,如果您想要值
>10
,为什么不删除
5
?抱歉-更新可能需要
.reindex(df.index)
将“Charlie”带回来…我认为在这里使用它更快numpy@ansev您假设该值每天都在增加