我正在尝试将vim纳入我的主要工作流程.对我来说,一个主要的关键点是交互式编辑和运行程序/脚本.
例如,鉴于我目前已进入test.py
print('hello')
x = 5
y = x+2
print(y)
Run Code Online (Sandbox Code Playgroud)
如果不离开vim,我将如何:
a)运行整个脚本而不离开vim
b)运行"print('hello')"
我试图将我的数据框从我有一个带有分类变量的列的长格式转换为宽格式,其中每个类别都有自己的价格列。目前,我的数据如下所示:
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)
我尝试使用 …
我正在尝试为我的数据创建一个名为'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)
但我得到了同样的错误.在没有警告的情况下实现这一目标的最佳方法是什么?
我正在尝试相对于索引的第二级重新索引数据帧.我有一个数据框,其中索引的第一级是用户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,这在此用例中不起作用.有任何想法吗?