【问题标题】:Iterate over pandas dataframe and update values in columns for a specific condition迭代 pandas 数据框并针对特定条件更新列中的值
【发布时间】:2020-10-15 22:12:38
【问题描述】:

我有一个带有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 的特定间隔内被删除,如输出

['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 列

【问题讨论】:

标签: python pandas dataframe iteration


【解决方案1】:

如果你的数据框的索引是 0 .. n 你可以应用这个:

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

这样你只保留每 10 行而不是 np.nan

【讨论】:

  • 谢谢,这正是我想要的,
猜你喜欢
  • 2023-01-14
  • 2018-09-25
  • 1970-01-01
  • 2021-09-17
  • 2019-10-09
  • 2019-07-08
  • 2020-12-01
  • 2018-09-30
  • 2020-09-30
相关资源
最近更新 更多