基本上,如果值大于或等于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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句