【问题标题】:Count non-empty cells in pandas dataframe rows and add counts as a column计算熊猫数据框行中的非空单元格并将计数添加为列
【发布时间】:2018-02-21 13:11:11
【问题描述】:

使用 Python,我想在 pandas 数据框中计算一行中包含数据的单元格数并记录该行最左侧单元格中的计数。

【问题讨论】:

  • 请发布您的数据示例和所需的输出,以及您迄今为止尝试过的代码。
  • 我在说明中添加了指向图片的链接。对于没有提供详细信息,我深表歉意。这是我第一次在堆栈溢出上发帖。
  • 正如@KeithDowd 的回答中提到的那样,“空”单元格并不是真正的“空”,它们可能包含空字符串、一些 numpy nan 值、None 等。所以如果你想计算那些空单元格,检查其中的实际内容很重要。
  • 您是否有机会将我的回复标记为您问题的答案? :)

标签: python pandas dataframe data-analysis


【解决方案1】:

要计算每行中缺少数据的单元格数量,您可能需要执行以下操作:

df.apply(lambda x: x.isnull().sum(), axis='columns')

df 替换为您的数据框的标签。

您可以创建一个新列并将计数写入其中:

df['MISSING'] = df.apply(lambda x: x.isnull().sum(), axis='columns')

该列将创建在数据框的末尾(最右侧)。

您可以像这样移动列:

df = df[['Count', 'M', 'A', 'B', 'C']]

更新

我想知道您丢失的单元格是否实际上是空字符串而不是 NaN 值。你确定吗?我将您的屏幕截图复制到 Excel 工作簿中。我的完整代码如下:

df = pd.read_excel('count.xlsx', na_values=['', ' '])
df.head() # You should see NaN for empty cells
df['M']=df.apply(lambda x: x.isnull().sum(), axis='columns')
df.head() # Column M should report the values: first row: 0, second row: 1, third row: 2
df = df[['Count', 'M', 'A', 'B', 'C']]
df.head() # Column order should be Count, M, A, B, C

注意pd.read_excel 方法中的na_values 参数。

【讨论】:

  • 我想知道该列将添加到哪里。我需要在最左边的列之后添加它。所以基本上B列并将所有数据向右移动。
  • 我也对其进行了测试,所有缺失值都显示为 4 而不是实际计数。
  • 您好,非常感谢您的帮助,但我尝试了您的最终解决方案,但缺失列中的所有值只给了我 0
  • 我又发布了一个更新。看看这是否对您有帮助。对不起,这太棘手了。
  • 我丢失的数据是空字符串,它们不是 nan 值
猜你喜欢
  • 1970-01-01
  • 2012-09-04
  • 1970-01-01
  • 2015-01-28
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多