首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入对应的列表到对应的重复行

插入对应的列表到对应的重复行
EN

Stack Overflow用户
提问于 2020-10-24 21:28:51
回答 1查看 27关注 0票数 0

我创建了两个列表:

代码语言:javascript
复制
list_1 = [a,b,c,d]
list_2 = [1,2,3,4]

我还创建了一个Dataframe:

代码语言:javascript
复制
Day   Subject
Day1  
Day2
Day3

然后,我使用df = df.loc[df.index.repeat(3)]复制了行,这样每一天它都会循环多次

代码语言:javascript
复制
Day   Subject 
Day1
Day1
Day1
Day2
Day2
Day2
Day3
Day3
Day3
Day1
...

我想将list_1插入到每个‘day1’的第一个匹配项中,并将list_2插入到'Day2‘中,这样输出应该如下所示

代码语言:javascript
复制
Day   Subject 
Day1  a
Day1
Day1
Day2  1
Day2
Day2
Day3
Day3
Day3
Day1  a
...

我想用

代码语言:javascript
复制
for i in range(0, df.shape[0]-1):
if df.iloc[i, 1] == 'Day1':
    df.iloc[i, 2] = list_1[0]

但它会循环遍历所有Day1s。有什么方法可以做到这一点吗?非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-24 23:32:46

使用ne-shift技巧找到连续序列中第一个“DayN”的位置,并将您的值填充到这些匹配的日期中。

代码语言:javascript
复制
# 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

输出

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64513826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档