【问题标题】:How to print excel column non null value with python?如何用python打印excel列的非空值?
【发布时间】:2023-01-11 09:52:32
【问题描述】:

我有以下 excel 表:

如果第 2 列的值不为空,则想要打印第 1 列的值。输出应该是 [1,3]。

这是我创建的脚本,但它不起作用:

import xlrd
import pandas as pd

filename='test.xlsx'
dataframe = pd.read_excel(filename)
frame = dataframe.loc[dataframe["col2"] !=" "]
df =  frame.iloc[:, 0]

ndarray = df.to_numpy()
print(ndarray)

【问题讨论】:

  • 为什么你认为它不起作用?
  • 您尝试过滤空格:" " 这可能是问题所在。在空的“单元格”中,pandas 使用 numpy.nan,因此更容易使用 pandas 内置功能来过滤这些行,例如 .notna()
  • 结果是 [1,2,3,4] 但预期输出是 [1,3]
  • @Andreas,你是对的。它在将其更改为:frame = dataframe.loc[dataframe["col2"].notna()] 后起作用

标签: python pandas


【解决方案1】:

您可以先过滤到 nona 行,然后显示要显示的列的值:

dataframe[df['col2'].notna()]['col1'].values

【讨论】:

    【解决方案2】:

    如果打印数据框,您会看到空单元格是NaN

          Col1 Col2
     0     1    a
     1     2  NaN
     2     3    b
     3     4  NaN
    

    所以,需要使用notna()方法进行过滤

    这是您的固定代码:

    import xlrd
    import pandas as pd
    
    filename='test.xlsx'
    dataframe = pd.read_excel(filename)
    frame = dataframe.loc[dataframe["col2"].notna()]
    df =  frame.iloc[:, 0]
    
    ndarray = df.to_numpy()
    print(ndarray)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-08
      • 2017-05-17
      • 2016-09-05
      • 1970-01-01
      • 1970-01-01
      • 2019-04-07
      • 2021-07-21
      • 1970-01-01
      相关资源
      最近更新 更多