ID_REF 1007_s_at 1053_at 117_at 121_at 1255_g_at
GSM11111 0.08277 0.00874 0.00363 0.01877 0.00075
GSM95474 0.09503 0.00592 0.00352 0.01944 0.00055
GSM95475 0.08486 0.00678 0.00386 0.01973 0.00039
GSM95476 0.08105 0.00913 1 0.01801 0.00055
GSM95477 0.05918 0.00812 0.00428 0.01597 0.00033
GSM95478 0.07615 0.00777 0.00438 0.01799 0.00129
GSM95479 0.0976 0 0.00399 0.0216 0.00125
GSM95480 0.08499 0.00442 0.00298 0.01897 0.00015
GSM95481 0.08893 0.00734 0.00204 0.01706 0.00089
GSM99999 0.05981 0.01587 0.00365 0.01709 0.0006
这是我的csv文件数据帧,在这里我有某些值,我希望在某些条件下按列查找它们的总计数(计算所有值,但基本上忽略0)),将会在 GSM99999 下面的每行(例如1007_s_at和其他表示的行)下添加一个名为 Final 的新行。 > 52 (其中52是Excel文件中保留0的数字的总数)
我想对整个excel文件运行此操作,而不管有多少列和行。我目前正在使用熊猫,并且刚刚开始学习。
这是csv文件映像版本:data csv file
以下是我正在寻找的输出:output
任何帮助对我来说都是非常棒的,谢谢:)
答案 0 :(得分:2)
import pandas as pd
df = pd.read_csv("<path to file>.csv").reset_index()
# update headers
df.columns = df.iloc[0]
df = df.iloc[1:].set_index("ID_REF")
df.loc["Final"] = ((df.notnull()) & (df != 0)).sum()
答案 1 :(得分:0)
从数据帧df
中的excel文件中读取他的文件后,您需要:
df = df.set_index('ID_REF')
df = df.append(pd.DataFrame(dict(((df.notnull()) & (df != 0)).sum()), index=['Final']))
输出:
1007_s_at 1053_at 117_at 121_at 1255_g_at
GSM11111 0.08277 0.00874 0.00363 0.01877 0.00075
GSM95474 0.09503 0.00592 0.00352 0.01944 0.00055
GSM95475 0.08486 0.00678 0.00386 0.01973 0.00039
GSM95476 0.08105 0.00913 1.00000 0.01801 0.00055
GSM95477 0.05918 0.00812 0.00428 0.01597 0.00033
GSM95478 0.07615 0.00777 0.00438 0.01799 0.00129
GSM95479 0.09760 0.00000 0.00399 0.02160 0.00125
GSM95480 0.08499 0.00442 0.00298 0.01897 0.00015
GSM95481 0.08893 0.00734 0.00204 0.01706 0.00089
GSM99999 0.05981 0.01587 0.00365 0.01709 0.00060
Final 10.00000 9.00000 10.00000 10.00000 10.00000