我需要使用不同的函数来处理数字列和字符串列.我现在在做什么真是愚蠢:
allc = list((agg.loc[:, (agg.dtypes==np.float64)|(agg.dtypes==np.int)]).columns)
for y in allc:
treat_numeric(agg[y])
allc = list((agg.loc[:, (agg.dtypes!=np.float64)&(agg.dtypes!=np.int)]).columns)
for y in allc:
treat_str(agg[y])
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方式来做到这一点?例如
for y in agg.columns:
if(dtype(agg[y]) == 'string'):
treat_str(agg[y])
elif(dtype(agg[y]) != 'string'):
treat_numeric(agg[y])
Run Code Online (Sandbox Code Playgroud) 例如,我有:
In [1]: df = pd.DataFrame([8, 9],
index=pd.MultiIndex.from_tuples([(1, 1, 1),
(1, 3, 2)]),
columns=['A'])
In [2] df
Out[2]:
A
1 1 1 8
3 2 9
Run Code Online (Sandbox Code Playgroud)
是否有更好的方法从索引中删除最后一个级别:
In [3]: pd.DataFrame(df.values,
index=df.index.droplevel(2),
columns=df.columns)
Out[3]:
A
1 1 8
3 9
Run Code Online (Sandbox Code Playgroud) 有没有办法在Visual Basic脚本中执行HTTP GET请求?我需要从特定的URL获取响应的内容以进行处理.
对于这个问题,这是一个相当类似的问题,但有一个关键的区别:我选择的数据不是通过索引而是通过某些标准来改变.
如果我应用的条件返回单行,我希望能够以一种简单的方式设置该行中某列的值,但我的第一次尝试不起作用:
>>> d = pd.DataFrame({'year':[2008,2008,2008,2008,2009,2009,2009,2009],
... 'flavour':['strawberry','strawberry','banana','banana',
... 'strawberry','strawberry','banana','banana'],
... 'day':['sat','sun','sat','sun','sat','sun','sat','sun'],
... 'sales':[10,12,22,23,11,13,23,24]})
>>> d
day flavour sales year
0 sat strawberry 10 2008
1 sun strawberry 12 2008
2 sat banana 22 2008
3 sun banana 23 2008
4 sat strawberry 11 2009
5 sun strawberry 13 2009
6 sat banana 23 2009
7 sun banana 24 2009
>>> d[d.sales==24]
day flavour sales year
7 sun banana 24 2009
>>> d[d.sales==24].sales = 100
>>> d
day …Run Code Online (Sandbox Code Playgroud) 我在列中有不同的日期.例如20080102,20070821
我想在年份和季度转换这个日期.
20080102
20070821
Run Code Online (Sandbox Code Playgroud)
Year Quarter
2008 2008-Q1
2007 2007-Q3
Run Code Online (Sandbox Code Playgroud)
我如何获得Quarter级别的详细信息.
是否可以按列的值对pandas数据帧进行排序,还可以通过索引进行排序?
如果按列的值对pandas数据框进行排序,则可以按列对结果数据框进行排序,但不幸的是,您会看到数据框索引的顺序在排序列的相同值内混乱.
那么,我可以按列对数据框进行排序,例如命名列,count还可以按索引值对其进行排序?是否可以按降序对列进行排序,但是按升序对索引进行排序?
我知道如何在数据框中对多个列进行排序,并且还知道我可以通过首先reset_index()对索引进行排序并对其进行排序,然后再次创建索引.但这样做是否更直观,更有效?
我已经搜索了一段时间但找不到任何相关问题。
当使用带有 Python 扩展的 Visual Studio Code 来调试大型元素时,计算表示或获取属性可能需要一些时间。
在这些情况下,会出现如下警告:
pydevd 警告:计算...(DataFrame)的 repr 很慢(花了 0.84 秒)
打印到调试控制台(另请参阅https://www.pydev.org/history_pydev.html)。
更烦人的是,左下角会出现一个弹出窗口。
有什么方法可以禁用这些警告,特别是有关此警告的弹出窗口?
我或多或少尝试了有关 Visual Studio Code 调试中的日志记录和警告的所有内容。
一个最小的例子看起来像
import pandas as pd
df = pd.read_csv('file of 1GB')
df
Run Code Online (Sandbox Code Playgroud)
该警告不是特定行上的警告,而是每次使用大对象时调试器发出的警告(例如,仅打印或使用 df.some_operation() 操作)。
我想修改一个pandas MultiIndex DataFrame,使每个索引组包含指定范围之间的日期.我希望每个小组用值0(或NaN)填写2013-06-11到2013-12-31的缺失日期.
Group A, Group B, Date, Value
loc_a group_a 2013-06-11 22
2013-07-02 35
2013-07-09 14
2013-07-30 9
2013-08-06 4
2013-09-03 40
2013-10-01 18
group_b 2013-07-09 4
2013-08-06 2
2013-09-03 5
group_c 2013-07-09 1
2013-09-03 2
loc_b group_a 2013-10-01 3
Run Code Online (Sandbox Code Playgroud)
我已经看过一些关于reindexing的讨论,但那是一个简单的(非分组的)时间序列数据.
是否有捷径可寻?
以下是我在完成此操作时所做的一些尝试.例如:一旦我被拆开['A', 'B'],我就可以重新索引.
df = pd.DataFrame({'A': ['loc_a'] * 12 + ['loc_b'],
'B': ['group_a'] * 7 + ['group_b'] * 3 + ['group_c'] * 2 + ['group_a'],
'Date': ["2013-06-11",
"2013-07-02",
"2013-07-09",
"2013-07-30",
"2013-08-06",
"2013-09-03", …Run Code Online (Sandbox Code Playgroud) 如果我有一个带有列x的数据帧df,并希望在伪代码中使用此值基于x的值创建列y
if df['x'] <-2 then df['y'] = 1
else if df['x'] > 2 then df['y']= -1
else df['y'] = 0
Run Code Online (Sandbox Code Playgroud)
我将如何实现这一目标.我认为np.where是最好的方法,但不知道如何正确编码.