首页 > 解决方案 > 在条件熊猫下插入完整的重复行

问题描述

基本上,如果值高于或等于 2,我会尝试考虑第三列 (df1[3]) 我想重复,即将整行插入新行,而不是替换。

这是数据框:

    1           2       3    
   
0   5614    banana      1   
1   4564    kiwi        1   
2   3314    salsa       2   
3   3144    avocado     1   
4   1214    mix         3   
5   4314    juice       1   

所需的输出:

    1           2       3       
1   5614    banana      1   
2   4564    kiwi        1   
3   3314    salsa       2   
4   3314    salsa       2  
5   3144    avocado     1   
6   1214    mix         3   
7   1214    mix         3 
8   1214    mix         3 
7   4314    juice       1   

DataFrame 的代码并尝试解决它:

l = [5614,4564,3314,3144,1214,4314]
i = ['banana','kiwi' ,'salsa','avocado','mix','juice']
n = [1,1,2,1,3,1]
df1 = pd.DataFrame(columns = (1,2,3))
df1[1] = l
df1[2] = i
df1[3] = n

    for indx,row in df.iterrows():
        if row[3].isdigit() == True and int(row[3]) >= 2:
            df1.loc[indx] = [row * int(row[3])]

显然,上述方法不会从每列创建一个具有相同值的新行,而是替换它。

Append() 也无法解决它,因为我必须保留完全相同的数据帧顺序。

当涉及到熊猫数据框时,列表中是否有类似于插入/扩展/添加或切片方法的东西?

标签: pythonpandasdataframe

解决方案


尝试repeat

count = pd.to_numeric(df['3'], errors='coerce').fillna(0).astype(int)

# replace '3' with actual column name
df.loc[df.index.repeat(count)]

输出:

      1        2  3
0  5614   banana  1
1  4564     kiwi  1
2  3314    salsa  2
2  3314    salsa  2
3  3144  avocado  1
4  1214      mix  3
4  1214      mix  3
4  1214      mix  3
5  4314    juice  1

推荐阅读