小编I a*_*Nik的帖子

使用先前的行引用快速循环Python数据帧

假设我有一个包含两列的pandas数据帧:ID和Days.DataFrame在两个变量中按升序排序.例如:

# Initial dataset
data = pd.DataFrame({'id': np.repeat([1, 2 ,3], 4),
                 'day': [1, 2, 10, 11, 3, 4, 12, 15, 1, 20, 21, 24]})

    id  day
0   1   1
1   1   2
2   1   10
3   1   11
4   2   3
5   2   4
6   2   12
7   2   15
8   3   1
9   3   20
10  3   21
11  3   24
Run Code Online (Sandbox Code Playgroud)

我想添加第三列,它会为每个ID*日提供一个"会话"号."会话"是指在一个会话期间之间差异小于2天的一系列天数.例如,序列5,6,7将被视为一个会话,而5,6,9将被视为两个会话,并且应该被标记为0, 0, 1,即第5天和第6天被引用到会话#0,而第9天被引用到会话#1.会话编号应该从0每个新ID开始.

换句话说,我想得到的是:

    id  day session
0   1   1 …
Run Code Online (Sandbox Code Playgroud)

python loops pandas

8
推荐指数
3
解决办法
284
查看次数

to_dict() 在值周围创建括号

我正在尝试从 pandas DataFrame 创建默认字典,但是 to_dict() 方法在我想要写入的列的值周围创建了不需要的方括号。示例代码如下:

# Create DF
my_df = pd.DataFrame({'numbers': (1, 2, 3, 4, 5), 'letters': ('a', 'b', 'c', 'd', 'e')})

# Create dictionary from the DF
my_dict = my_df.set_index('numbers').T.to_dict('list')

# Create collections dictionary
my_collections_dict = collections.defaultdict(int, my_dict)
Run Code Online (Sandbox Code Playgroud)

结果是:

defaultdict(int, {1: ['a'], 2: ['b'], 3: ['c'], 4: ['d'], 5: ['e']})
Run Code Online (Sandbox Code Playgroud)

我想要的是:

defaultdict(int, {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'})
Run Code Online (Sandbox Code Playgroud)

如何获取“纯”列值?

python dictionary pandas

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

标签 统计

pandas ×2

python ×2

dictionary ×1

loops ×1