python - 在条件熊猫下插入完整的重复行
问题描述
基本上,如果值高于或等于 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() 也无法解决它,因为我必须保留完全相同的数据帧顺序。
当涉及到熊猫数据框时,列表中是否有类似于插入/扩展/添加或切片方法的东西?
解决方案
尝试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
推荐阅读
- javascript - Javascript检测计算的css属性何时更改
- android - 应用因违反政策而在 Playstore 上被拒绝默认电话处理程序
- c# - Linq 方法 - 返回包含所有选定标签的所有食谱
- c# - 在 DataGridView 中编辑单元格时 C# WPF 自动完成
- python - 为什么pyinstaller会创建这么大的exe文件?
- javascript - 径向进度条末端的圆边
- .net - 如何创建 .NET windows 应用程序来连接和调用 AS400 存储过程?
- python - 使用 python 打开 Spotify 和其他应用程序
- python - 如果以前我使用随机包在 python 中生成 unique_code,那么使用 secrets 包的最佳方法是什么?
- php - 没有安装 nwidart/laravel-menus