如何在Pandas DataFrame行上打印列名?

时间:2018-09-25 21:46:47

标签: python pandas dataframe

我有这个DataFrame:

 df = pd.DataFrame({'day':['1/1/2017','1/2/2017','1/3/2017','1/4/2017','1/5/2017','1/6/2017','1/7/2017'],
                     'event':['Rain','Sunny','Snow','Snow','Rain','Sunny','Sunny'],
                   'temperature': [32, 35, 28,24,32,31,''],'windspeed':[6,7,2,7,4,2,'']})
 df

enter image description here

我正在尝试查找索引6上缺少值的标头:

for x in df.loc[6]:
if x == '':
    print(df.columns.values)
else: print(x)

enter image description here

我已经尝试过搜索,而最接近的就是我现在拥有的。最终,我尝试将这些值插入数据框中:temperature = 34,风速= 8。

但是我的第一步只是尝试构建loop / if语句,该语句表示x ==''&[COLUMN_NAME] =='temperature'...,这就是我遇到的问题。我是python的新手,只是想学习Pandas。我只需要返回我所在的列,而不是所有列的列表。

3 个答案:

答案 0 :(得分:2)

有更好的方法可以做到这一点,但这是可行的。

for col, val in df.loc[6].iteritems():
    if not val: # this is the same as saying "if val == '':"
        print(col)
    else:
        print(val)

答案 1 :(得分:1)

根据您的代码进行了修改:

for i,x in enumerate(df.loc[6]):
    if x == '':
        print(df.columns[i])
    else: print(x)

答案 2 :(得分:1)

我将按以下方式使用列表理解:

listOfNulls = [ind  for ind in df.loc[6].index if df.loc[6][ind] == '']

当我打印listOfNulls时,我得到:

>>>> print(listOfNulls)
Out: ['temperature', 'windspeed']

这里的关键是要了解df.loc [6]是具有索引的熊猫Series。我们正在使用Series的值来获取索引。