小编Cha*_*les的帖子

从Vim中的脚本执行选择

我正在尝试将vim纳入我的主要工作流程.对我来说,一个主要的关键点是交互式编辑和运行程序/脚本.

例如,鉴于我目前已进入test.py

print('hello')
x = 5
y = x+2
print(y)
Run Code Online (Sandbox Code Playgroud)

如果不离开vim,我将如何:
a)运行整个脚本而不离开vim
b)运行"print('hello')"

vim

19
推荐指数
2
解决办法
3871
查看次数

长到宽数据。熊猫

我试图将我的数据框从我有一个带有分类变量的列的长格式转换为宽格式,其中每个类别都有自己的价格列。目前,我的数据如下所示:

date-time            date       vendor    payment_type   price
03-10-15 10:00:00    03-10-15     A1            1          50
03-10-15 10:00:00    03-10-15     A1            2          60
03-10-15 10:00:00    03-11-15     A1            1          45
03-10-15 10:00:00    03-11-15     A1            2          70
03-10-15 10:00:00    03-12-15     B1            1          40
03-10-15 10:00:00    03-12-15     B1            2          45
03-10-15 10:00:00    03-10-15     C1            1          60
03-10-15 10:00:00    03-10-15     C1            1          65
Run Code Online (Sandbox Code Playgroud)

我的目标是为每个供应商的价格和每种付款类型设置一列,每天一行。当每天有多个值时,我想使用最大值。最终结果应该是这样的。

Date       A1_Pay1   A2_Pay2 ... C1_Pay1   C1_Pay2
03-10-15     50        60    ...   65        NaN
03-11-15     45        70    ...   NaN       NaN
03-12-15     NaN       NaN   ...   NaN       NaN
Run Code Online (Sandbox Code Playgroud)

我尝试使用 …

python pandas

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

在列创建上设置WithCopyWarning

我正在尝试为我的数据创建一个名为'mv_avg'的移动平均列.我得到了一个我无法修复的SettingWithCopyWarning.我可以抑制警告,但我无法弄清楚我的代码在哪里创建副本,我想利用最佳实践.我在下面创建了一个可推广的示例来说明问题.

data = {'category' : ['a', 'a', 'a', 'b', 'b', 'b'], 'value' : [1,2,3,4,5,6]}
df = pd.DataFrame(data)
df_a = df.loc[df['category'] == 'a']
df_a['mv_avg'] = df_a['value'].rolling(window=2).mean()
Run Code Online (Sandbox Code Playgroud)

返回:

SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
Run Code Online (Sandbox Code Playgroud)

我也尝试了更详细的版本:

df_a.loc[: , 'mv_avg'] = df_a.loc[:,'value'].rolling(window=2).mean()
Run Code Online (Sandbox Code Playgroud)

但我得到了同样的错误.在没有警告的情况下实现这一目标的最佳方法是什么?

python pandas

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

Pandas重新索引MultiIndex相对于任意级别

我正在尝试相对于索引的第二级重新索引数据帧.我有一个数据框,其中索引的第一级是用户ID,第二级是日期.例如:

pd.DataFrame({
'id': 3*['A'] + 5*['B'] + 4*['C'],
'date': ['01-01-2010', '02-01-2010', '12-01-2010',
         '04-01-2015', '05-01-2015', '03-01-2016', '04-01-2016', '05-01-2016',
         '01-01-2015', '02-01-2015', '03-01-2015', '04-01-2015'],
'value': np.random.randint(10,100, 12)})\
.set_index(['id', 'date'])
Run Code Online (Sandbox Code Playgroud)

我想重新索引日期以填写缺少的日期,但仅限于每个"id"组的最大日期和最小日期之间的日期.

例如,用户"A"应该具有2010年1月至12月的连续月度数据,用户"B"应该具有2015年4月到2016年5月之间的连续日期.为简单起见,我们假设我想用零填充NaN.

类似于此的其他问题假设我想对所有用户使用相同的date_range,这在此用例中不起作用.有任何想法吗?

python multi-index pandas

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

标签 统计

pandas ×3

python ×3

multi-index ×1

vim ×1