【发布时间】:2017-05-31 09:55:39
【问题描述】:
我正在使用 pandas 读取 excel 文件并将电子表格转换为数据框。然后我应用 groupby 并使用 get_group 将各个组存储在变量中以供以后计算。 我的问题是输入文件的大小并不总是相同,有时 groupby 会产生 10 个 dfs,有时会产生 25 个等。如果初始数据中缺少 df,我如何让我的程序忽略?
df = pd.read_excel(filepath, 0, skiprows=3, parse_cols='A,B,C,E,F,G',
names=['Result', 'Trial', 'Well', 'Distance', 'Speed', 'Time'])
df = df.replace({'-': 0}, regex=True) #replaces '-' values with 0
df = df['Trial'].unique()
gb = df.groupby('Trial') #groups by column Trial
trial_1 = gb.get_group('Trial 1')
trial_2 = gb.get_group('Trial 2')
trial_3 = gb.get_group('Trial 3')
trial_4 = gb.get_group('Trial 4')
trial_5 = gb.get_group('Trial 5')
假设我的初始数据只有 3 次试验,我如何让它在以后忽略 4、5 次试验?我的代码在所有试验都存在时运行,但在缺少一些试验时失败:(听起来很像需要一个 if 语句,但我疲惫的大脑不知道在哪里......
提前致谢!
【问题讨论】:
-
gb.groups将返回组名和标签的字典:pandas.pydata.org/pandas-docs/stable/generated/…,因此您可以使用这些来获取组 -
抱歉这个愚蠢的问题,但这对我有什么帮助?
-
因为你得到了组的字典,所以你不需要硬编码代码中的组数
-
你看到我的回答了吗?你得到一个组名和级别的字典,然后你使用组名并将它们传递给
get_group,例如,gb_dict.keys()会返回一个组名列表,然后你可以将它们传递给get_group -
是的,我是个白痴,请重新阅读您的答案。现在一切正常!你是明星,非常感谢你,为愚蠢的 Q 道歉!
标签: python python-2.7 pandas group-by