我的python pandas panderrame最初使用openpyxl引擎来处理excel处理,可以简单的描述为
df1 = pd.DataFrame({"col1":["",99,88,np.nan,66,55,np.nan,11,22],"col2":['Catg0','Asset1','Other','Catg1','H & F','Large Item','Catg2','Fragile','Delicate item'],"col3":["",0,0,np.nan,99,155,np.nan,83,115]})
col1 col2 col3
0 Catg0
1 99 Asset1 0
2 88 Other 0
3 NaN Catg1 NaN
4 66 H & F 99
5 55 Large Item 155
6 NaN Catg2 NaN
7 11 Fragile 83
8 22 Delicate item 115
虽然我试图让它得到进一步修改有新的列(col4)通过旋转值从其他列(col2)时,其他列的数据是空的或楠为该行,直到下一个这样的条件满足
它应该在透视后删除该行
col1 col4 col2 col3
0 99 Catg0 Asset1 0
1 88 Catg0 Other 0
2 66 Catg1 H & F 99
3 55 Catg1 Large Item 155
4 11 Catg2 Fragile 83
5 22 Catg2 Delicate item 115
import pandas as pd
import numpy as np
df1 = pd.DataFrame({"col1":["",99,88,np.nan,66,55,np.nan,11,22],"col2":['Catg0','Asset1','Other','Catg1','H & F','Large Item','Catg2','Fragile','Delicate item'],"col3":["",0,0,np.nan,99,155,np.nan,83,115]})
df1.insert(1, "col4", 'Catg')
型
我试图找到一种方法来添加这些基于模式或条件逻辑来填充'col4'并丢弃这些行
2条答案
按热度按时间vddsk6oq1#
您可以通过没有
col2
的所有列来识别空或nan
s,首先通过DataFrame.drop
来删除列,如果所有其他列都是DataFrame.all
,则替换NaN
s并测试空字符串,然后添加Series.where
并向前填充重复类别的缺失值,最后在boolean indexing
中过滤掉这些行:字符串
另一种方法是使用模式获取
col2
值-例如,这里以Catg
开头,数字:型
kb5ga3dv2#
另一种可能的解决方案是使用
cumsum
来定义组,然后使用groupby
和apply
来修改分组的多个帧:字符串
输出量:
型