【问题标题】:How to print index value, column name, and column data for each row of pandas dataframe?如何为 pandas 数据框的每一行打印索引值、列名和列数据?
【发布时间】:2020-12-15 13:56:48
【问题描述】:

我有一个如下所示的数据框:

dict={'475':['NaN', 0.6, 'NaN', 'NaN', 'NaN', 'NaN'],
      '575':['NaN', 'NaN', 0.11, 'NaN', 'NaN', 'NaN'],
      '675':[0.223, 'NaN',  'NaN', 0.913, 'NaN', 'NaN'],
      '1775':['NaN', 'NaN', 'NaN', 'NaN', 3.46, 'NaN'], 
      '1875':['NaN', 'NaN', 'NaN', 'NaN', 'NaN', 3.46] 
     } 

df=pd.DataFrame(dict,index=['33', '35', '36', '13', '41', '1222'])

我想为每一行打印一条语句:

位置 index_value 位于站 column namecolumn value 内,即对于数据帧的第一行,这将是:

位置 33 距离 675 站 0.223 公里范围内

我试过了:

for index, column in df.iterrows():
    print('Farm number ' + str(index) + ' is within 5km of ' + str(column))

但这每次都会打印所有索引值,我看不到下一步该去哪里。

非常感谢一些指导。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以将NaN 字符串替换为NaN 缺失值并通过DataFrame.stack 重塑,因此缺失值被删除,您可以使用MultiIndex Series 循环:

    for (i, c), v in df.replace('NaN',np.nan).stack().items():
        print(f"Location {i} is within {v}km of station {c}")
    

    Location 33 is within 0.223km of station 675
    Location 35 is within 0.6km of station 475
    Location 36 is within 0.11km of station 575
    Location 13 is within 0.913km of station 675
    Location 41 is within 3.46km of station 1775
    Location 1222 is within 3.46km of station 1875
    

    你也可以创建DataFrame:

    df1 = df.replace('NaN',np.nan).stack().rename_axis(['i','c']).reset_index(name='v')
    print (df1)
          i     c      v
    0    33   675  0.223
    1    35   475  0.600
    2    36   575  0.110
    3    13   675  0.913
    4    41  1775  3.460
    5  1222  1875  3.460
    

    【讨论】:

      猜你喜欢
      • 2017-10-21
      • 1970-01-01
      • 2017-07-09
      • 2016-11-14
      • 2019-12-04
      • 1970-01-01
      • 2013-03-30
      • 2022-07-11
      • 1970-01-01
      相关资源
      最近更新 更多