将相应的列表插入到相应的重复行中



我创建了两个列表:

list_1 = [a,b,c,d]
list_2 = [1,2,3,4]

我还创建了一个数据帧:

Day   Subject
Day1  
Day2
Day3

然后,我使用df = df.loc[df.index.repeat(3)]复制该行,使其在每一天的中循环多次

Day   Subject 
Day1
Day1
Day1
Day2
Day2
Day2
Day3
Day3
Day3
Day1
...

我想将list_1插入每个"Day1"的第一次出现,将list_2插入"Day2",这样输出应该像一样

Day   Subject 
Day1  a
Day1
Day1
Day2  1
Day2
Day2
Day3
Day3
Day3
Day1  a
...

我想用

for i in range(0, df.shape[0]-1):
if df.iloc[i, 1] == 'Day1':
df.iloc[i, 2] = list_1[0]

但它会循环到所有的第1天。有什么方法可以做到这一点吗?非常感谢!

使用ne-shift技巧来查找第一个"第N天;s,并将您的值填入匹配的天数中。

# sample dataset
days = np.tile(np.array(["Day1","Day2","Day3"]).repeat(3), 2)
df = pd.DataFrame(days, columns=["Day"])
# mark the first consecutive days
df["first"] = df["Day"].ne(df["Day"].shift())
# fill in the values
df["Subject"] = None
df.loc[df["first"] & (df["Day"] == "Day1"), "Subject"] = "a"
df.loc[df["first"] & (df["Day"] == "Day2"), "Subject"] = 1

输出

df
Out[2]: 
Day  first Subject
0   Day1   True       a
1   Day1  False    None
2   Day1  False    None
3   Day2   True       1
4   Day2  False    None
5   Day2  False    None
6   Day3   True    None
7   Day3  False    None
8   Day3  False    None
9   Day1   True       a
10  Day1  False    None
11  Day1  False    None
12  Day2   True       1
13  Day2  False    None
14  Day2  False    None
15  Day3   True    None
16  Day3  False    None
17  Day3  False    None

相关内容

  • 没有找到相关文章

最新更新