【问题标题】:Iterate Dataframe using list and groupby使用 list 和 groupby 迭代 Dataframe
【发布时间】:2018-01-30 17:59:05
【问题描述】:

我有一个数据框,我想对分组数据执行相同的操作(即相关性、绘图)。分组基于位置(在 Dataframe 中称为 STA)。

Dataframe 示例如下:

Index STA   Date        Var1    Var2    Var3   
0   RE25    1973-04-09  1.0     10.5    6.3
1   RE30    1973-04-09  1.0     10.0    7.6
2   RE25    1973-04-09  5.0     10.6    NaN
3   RE30    1973-04-09  5.0     10.0    NaN
4   RE25    1973-04-09  10.0    10.6    NaN
5   RE30    1973-04-09  10.0    10.2    NaN
6   RE25    1973-04-09  15.0    10.7    NaN
7   RE30    1973-04-09  15.0    10.1    NaN
8   RE25    1973-04-09  20.0    10.7    NaN
9   RE30    1973-04-09  20.0    10.1    NaN
10  RE30    1973-04-09  23.0    10.0    7.6

为了生成唯一采样 STA 的列表(每个 DataFrame 都会不同),我使用了

Stations = np.sort(Resdat.STA.unique()).tolist()

它可以创建我所追求的唯一 STA 列表。但是,当我尝试调用此列表时,我收到以下错误:

TypeError: 'list' object is not callable.

以我有限的知识,我只在以下代码方面取得了进展:

RE01 = Resdat.groupby('STA').get_group('RE01')
RE01 = RE01.dropna(axis = 1, how = 'all')

为每个唯一的 STA 一遍又一遍地重复。

我确信有更好的方法,但我很难找到其他可以使用的已发布答案。

【问题讨论】:

  • “但是,当我尝试调用此列表时...”是什么意思?当您调用列表时,您想做什么?

标签: python list pandas


【解决方案1】:

你可以使用for循环

names=[]
l=[]
for name, data in df.groupby('STA'):
    names.append(name)
    l.append(data.dropna(axis=1, how='all'))

【讨论】:

  • 对不起 - 我还不能尝试这个。你能解释一下代码在做什么吗?
  • @Newstudent14 这将您的 df 按 STA 拆分,并执行子集的 dropna ,将结果恢复到列表中,如果您想将其组合回执行 pd.concate(l) 的数据帧
猜你喜欢
  • 2018-01-15
  • 1970-01-01
  • 1970-01-01
  • 2020-02-15
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
  • 2020-04-26
相关资源
最近更新 更多