如何在循环中添加新列?

2024-09-28 18:47:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在我的数据框中添加一列。该列表示每行不带nan值的列数

我这样做:

for i_diagn in range(0,len(df_diagnassoc)): 
    df_diagnassoc['nr_diagnassoc'][i_diagn] = df_diagnassoc.shape[1] - df_diagnassoc.iloc[i_diagn].isnull().sum() 

但是,它不识别df_diagnassoc['nr_diagnassoc'],因为它不存在。但是,我希望它在这个循环中创建它

然后我以另一种方式思考,没有循环:

df_diagnassoc['nr_diagnassoc'] = df_diagnassoc.shape[1] - df_diagnassoc.isnull().sum(axis = 1)

它会运行,但会显示警告:

A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  """Entry point for launching an IPython kernel.

有什么建议吗?提前谢谢


Tags: theinpandasdfforvaluenrsum
1条回答
网友
1楼 · 发布于 2024-09-28 18:47:33

我无法在没有数据的情况下尝试,但我认为这是添加每行非空值数的列的更好方法:

df_diagnassoc['nr_diagnassoc'] = df_diagnassoc.apply(lambda x: x.count(), axis=1)

apply在数据帧上使用axis=1循环遍历行,并且count()返回该行中非空值的数量

相关问题 更多 >