簡體   English   中英

迭代 pandas dataframe 並針對特定條件更新列中的值

[英]Iterate over pandas dataframe and update values in columns for a specific condition

我有一個 Pandas dataframe 和checkdataframe.shape (68125, 109) 我想在所有列中執行操作,就像我在下面為單個列表執行的操作一樣。

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 列

如果您的 dataframe 的索引為 0.. n 您可以應用此:

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

這樣你只保留每 10 行而不是 np.nan

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM