下面是我的代码,它只是组合在一起并平均行集。对于我的生活,我无法理解为什么在最终结果中删除了一列。
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列。
输出的快照如下所示。
答案 0 :(得分:0)
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])