首页 > 解决方案 > 有没有一种简单的方法来改变 pandas 打印整数空值的方式?

问题描述

我正在尝试漂亮地打印具有可为空整数内容的 Pandas DataFrame。该DataFrame.to_string()方法有一个可选参数 ,na_rep您可以使用它来覆盖浮点空值的打印方式。至少在 Pandas 1.2.4 中,它似乎不会影响可空整数对象的打印方式。在下面的最小示例中,"<NA>"当我想要一个空白时,该方法返回字符串。

最小的例子:

import pandas as pd

print(f"\nPandas version = {pd.__version__}")

index = list("abcd")
columns = list("efghjk")
df1 = pd.DataFrame(index=index, columns=columns)
df2 = pd.DataFrame(index=index, columns=columns, dtype=pd.Int32Dtype())
for df in (df1, df2):
    df.at["c", "h"] = 7 # Some non-null content
    print("\n", df.to_string(na_rep=""))

输出:

Pandas version = 1.2.4

   e f g  h j k
a             
b             
c        7    
d             

       e     f     g     h     j     k
a  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>
b  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>
c  <NA>  <NA>  <NA>     7  <NA>  <NA>
d  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>

标签: pythonpandas

解决方案


这将起作用:

import pandas as pd

print(f"\nPandas version = {pd.__version__}")

index = list("abcd")
columns = list("efghjk")
df1 = pd.DataFrame(index=index, columns=columns)
df2 = pd.DataFrame(index=index, columns=columns, dtype=pd.Int32Dtype())
for df in (df1, df2):
    df.at["c", "h"] = 7 # Some non-null content
    print("\n", df.astype('float64').to_string(float_format='%d', na_rep="")) 

推荐阅读