遍历熊猫数据框并针对特定条件更新列中的值

时间:2020-06-25 12:41:21

标签: python pandas dataframe iteration

我有一个checkdataframe.shape (68125, 109)的Pandas数据框。我想在所有列中执行“操作”,就像我在下面为单个列表所做的那样。

def alter_column(column,batchSize=10):
return_list=[]
for idx,value in enumerate(column): 
        if (idx+1)%batchSize==1: 
            return_list.append(value)
        else:
            return_list.append(np.nan)
return return_list

返回一个列表,该列表的值在某些间隔10内已删除,例如此Output

['175,5200',nan,nan,nan,nan,nan,nan,nan,nan,nan,'175,5200',nan,nan,nan,nan,nan,nan,nan,nan,nan,'180,0000']

我希望它能在整个dataframe上做到。我尝试了df.iteritems和df.iterrows,但显示错误。有任何可行的解决方案或方法吗?

eg:df['column1']=[1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2]
   df['column2']=[3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4]
expected_output:
column1=['1',nan,nan,nan,nan,nan,nan,nan,nan,nan,'2',nan,nan,nan,nan,nan,nan,nan,nan,nan] column2=['3',nan,nan,nan,nan,nan,nan,nan,nan,nan,'4',nan,nan,nan,nan,nan,nan,nan,nan,nan]   

但是我的真实数据集有109列

1 个答案:

答案 0 :(得分:1)

如果数据框的索引为0 .. n,则可以应用以下内容:

df[~df.index.isin(np.arange(0, df.shape[0], batchSize))] = np.nan

这样,您仅将每10行保留为np.nan