数据帧追加期间意外删除列

2024-09-30 07:30:18 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我的代码,它简单地组合在一起并平均一组行。就我的一生而言,我不明白为什么在最终结果中会有一列被删除。你知道吗

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列。你知道吗

channels.csv snapshot

输出的快照如下所示。你知道吗

Output from function


Tags: csvsample函数代码importpandasindexgroup
1条回答
网友
1楼 · 发布于 2024-09-30 07:30:18

@tmrlvi以上的评论完全值得称赞。列被删除的原因确实是由于其中存在非数字数据。下面是一个代码片段,它用非数字数据标识行和列,改编自another SO question。你知道吗

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将返回包含非数字数据的行,而将其设置为0将返回列。你知道吗

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

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

相关问题 更多 >

    热门问题