相关疑难解决方法(0)

如何使用Pandas groupby在组上添加顺序计数器列

我觉得有一种比这更好的方法:

import pandas as pd
df = pd.DataFrame(
    [['A', 'X', 3], ['A', 'X', 5], ['A', 'Y', 7], ['A', 'Y', 1],
     ['B', 'X', 3], ['B', 'X', 1], ['B', 'X', 3], ['B', 'Y', 1],
     ['C', 'X', 7], ['C', 'Y', 4], ['C', 'Y', 1], ['C', 'Y', 6]],
    columns=['c1', 'c2', 'v1'])
def callback(x):
    x['seq'] = range(1, x.shape[0] + 1)
    return x
df = df.groupby(['c1', 'c2']).apply(callback)
print df
Run Code Online (Sandbox Code Playgroud)

为达到这个:

   c1 c2  v1  seq
0   A  X   3    1
1   A  X   5    2
2   A …
Run Code Online (Sandbox Code Playgroud)

python pandas

32
推荐指数
1
解决办法
1万
查看次数

在pandas中具有运行编号的新列,有条件地递增

题:

给定一个包含如下数据的数据框:

>>> df
    data
0  START
1   blah
2   blah
3   blah
4   blah
5    END
6  START
7   blah
8   blah
9    END
Run Code Online (Sandbox Code Playgroud)

分配具有每次递增的运行数的新列的最有效方法是什么START?这是我想要的结果:

>>> df
    data  number
0  START       1
1   blah       1
2   blah       1
3   blah       1
4   blah       1
5    END       1
6  START       2
7   blah       2
8   blah       2
9    END       2
Run Code Online (Sandbox Code Playgroud)

我做了什么

这很好,但速度很慢(这将适用于更大的数据帧,我相信有更好的方法可以做到这一点:

counter = 0
df = df.assign(number = 0)
for i, row in df.iterrows():
    if row['data'] == …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

2
推荐指数
1
解决办法
84
查看次数

标签 统计

pandas ×2

python ×2

dataframe ×1