繁体   English   中英

在Pandas Dataframe Append期间列意外删除

[英]Column unexpectedly dropped during Pandas Dataframe Append

下面是我的代码,它简单地分组在一起并平均行集。 为了我的一生,我不明白为什么最终结果中会删除一列。

import pandas as pd

def group_rows(dataframe1):
    incr = 10
    dataframe3 = pd.DataFrame()
    for i in range(0,len(dataframe1.index),incr):
        tmp = dataframe1[i:i+incr].mean()
        dataframe3 = dataframe3.append(tmp, ignore_index=True)
    print dataframe3.to_string()

group_rows(pd.read_csv('sample.csv')) # Inputs the CSV file whose snapshot is shown below

CSV文件sample.csv是上述group_rows()函数的输入 ,由12列和许多行组成。 此函数返回的结果有11列而不是12列。

channel.csv快照

下面是输出的快照。

功能输出

上面评论中的@tmrlvi应该完全归功于此答案。 删除列的原因确实是由于其中存在非数字数据。 下面是一个代码片段,用于识别具有非数字数据的行和列,并改编自另一个SO问题

def is_numeric(val):
    try:
        val = str(val)
        return float(val) and '.' in val or val.isdigit()
    except ValueError:
        return False

def non_numeric(dataframe, axis = 1):
    dataframe1 = dataframe1.applymap(is_numeric).all(axis)
    return [i for i in range(0, len(dataframe1)) if not dataframe1[i]]

代码段中的一些注释。 axis设置为1会返回包含非数值数据的行,而将axis设置为0则会返回列。

我建议的策略是删除行,而不是Pandas在诸如mean()聚合函数上默认删除列。 要删除非数字行,以下代码段很有用。

nonnum_rows = non_numeric(dataframe1)
dataframe1 = dataframe1.drop(dataframe1.index[nonnum_rows])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM