小编piR*_*red的帖子

按行切片Pandas DataFrame

我正在hdf = pandas.HDFStore('Survey.h5')通过pandas包处理从h5文件加载的调查数据.在此范围内DataFrame,所有行都是单个调查的结果,而列是单个调查中所有问题的答案.

我的目标是将此数据集缩小到一个较小的数据集,DataFrame仅包括某个问题上具有特定描述答案的行,即此列中的所有相同值.我能够确定具有此条件的所有行的索引值,但我找不到如何删除此行或仅使用这些行创建新的df.

python slice pandas

26
推荐指数
2
解决办法
6万
查看次数

在Pandas DataFrame中选择多个列范围

我必须阅读一些Excel格式的文件和一些CSV格式的文件.有些文件有数百列.

有没有办法选择多个列范围而不指定所有列名称或位置?例如,选择列1-10,15,17和50-100:

df = df.ix[1:10, 15, 17, 50:100]
Run Code Online (Sandbox Code Playgroud)

我需要知道在从Excel文件和CSV文件创建数据框时以及在创建数据框架后如何执行此操作.

python numpy dataframe pandas

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

使用Python中的pandas将YYYYMMDD和HH放在单独的列中时解析日期

我有一个与csv文件和解析日期时间相关的简单问题.

我有一个看起来像这样的csv文件:

YYYYMMDD, HH,    X
20110101,  1,   10
20110101,  2,   20
20110101,  3,   30
Run Code Online (Sandbox Code Playgroud)

我想用pandas(read_csv)阅读它并将它放在由datetime索引的数据帧中.到目前为止,我已尝试实现以下内容:

import pandas as pnd
pnd.read_csv("..\\file.csv",  parse_dates = True, index_col = [0,1])
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

                         X
YYYYMMDD    HH            
2011-01-01 2012-07-01   10
           2012-07-02   20
           2012-07-03   30
Run Code Online (Sandbox Code Playgroud)

正如您在将HH转换为不同日期时看到的parse_dates.

是否有一种简单有效的方法可以将"YYYYMMDD"列与"HH"列正确组合以获得类似的效果?:

                      X
Datetime              
2011-01-01 01:00:00  10
2011-01-01 02:00:00  20
2011-01-01 03:00:00  30
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助.

python pandas

25
推荐指数
2
解决办法
2万
查看次数

比较2个熊猫系列时会发生什么

在比较两个系列时,我遇到了大熊猫的意外行为.我想知道这是故意还是错误.

假设我:

import pandas as pd
x = pd.Series([1, 1, 1, 0, 0, 0], index=['a', 'b', 'c', 'd', 'e', 'f'], name='Value')
y = pd.Series([0, 2, 0, 2, 0, 2], index=['c', 'f', 'a', 'e', 'b', 'd'], name='Value')

x > y
Run Code Online (Sandbox Code Playgroud)

收益率:

a     True
b    False
c     True
d    False
e    False
f    False
Name: Value, dtype: bool
Run Code Online (Sandbox Code Playgroud)

这不是我想要的.很明显,我预计索引会排成一行.但我必须明确排列它们才能获得理想的结果.

x > y.reindex_like(x)
Run Code Online (Sandbox Code Playgroud)

收益率:

a     True
b     True
c     True
d    False
e    False
f    False
Name: Value, dtype: bool
Run Code Online (Sandbox Code Playgroud)

这是我的预期.

更糟糕的是,如果我:

x …
Run Code Online (Sandbox Code Playgroud)

python compare series pandas

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

Python Pandas Group使用datetime数据按日期

我有一个列Date_Time,我希望按日期时间分组而不创建新列.这可能是我当前的代码不起作用.

df = pd.groupby(df,by=[df['Date_Time'].date()])
Run Code Online (Sandbox Code Playgroud)

python datetime dataframe pandas pandas-groupby

25
推荐指数
3
解决办法
4万
查看次数

为什么盲目地使用df.copy()一个坏主意来修复SettingWithCopyWarning

关于可怕的问题,有无数的问题 SettingWithCopyWarning

我已经很好地理解了它是如何产生的.(注意我说好,不好)

当数据df帧通过存储的属性"附加"到另一个数据帧时,就会发生这种情况is_copy.

这是一个例子

df = pd.DataFrame([[1]])

d1 = df[:]

d1.is_copy

<weakref at 0x1115a4188; to 'DataFrame' at 0x1119bb0f0>
Run Code Online (Sandbox Code Playgroud)

我们可以将该属性设置为None

d1 = d1.copy()
Run Code Online (Sandbox Code Playgroud)

我见过像@Jeff这样的开发者,我不记得还有谁,警告这样做.引用SettingWithCopyWarning有目的.

问题
好的,那么什么是一个具体的例子,说明为什么通过分配copy回原始来忽略警告是一个坏主意.

我会定义"坏主意"以澄清.

坏主意
这是一个坏主意来放置代码投入生产,这将导致越来越在星期六晚上说你的代码被打破,需要固定的中间一个电话.

现在如何使用df = df.copy()以绕过SettingWithCopyWarning导致获得那种电话.我想要它拼写出来,因为这是一个混乱的来源,我试图找到清晰度.我想看到爆炸的边缘情况!

python pandas chained-assignment

25
推荐指数
2
解决办法
2975
查看次数

pandas:在DataFrame中组合两列

我有一个DataFrame包含多个列的pandas :

Index: 239897 entries, 2012-05-11 15:20:00 to 2012-06-02 23:44:51
Data columns:
foo                   11516  non-null values
bar                   228381  non-null values
Time_UTC              239897  non-null values
dtstamp               239897  non-null values
dtypes: float64(4), object(1)
Run Code Online (Sandbox Code Playgroud)

where foobar是包含相同数据的列,但命名方式不同.是否有移动从而弥补了行的方式foo进入bar,最好同时保持的名字bar

最后,DataFrame应显示为:

Index: 239897 entries, 2012-05-11 15:20:00 to 2012-06-02 23:44:51
Data columns:
bar                   239897  non-null values
Time_UTC              239897  non-null values
dtstamp               239897  non-null values
dtypes: float64(4), object(1)
Run Code Online (Sandbox Code Playgroud)

这就是组成bar的NaN值被来自的值替换foo.

python dataframe pandas

23
推荐指数
4
解决办法
6万
查看次数

Python statsmodels OLS和R的lm的区别

我不确定为什么我的简单OLS会得到略微不同的结果,这取决于我是否通过panda的实验性rpy接口进行回归,R或者我是否在Python中使用statsmodel.

import pandas
from rpy2.robjects import r

from functools import partial

loadcsv = partial(pandas.DataFrame.from_csv,
                  index_col="seqn", parse_dates=False)

demoq = loadcsv("csv/DEMO.csv")
rxq = loadcsv("csv/quest/RXQ_RX.csv")

num_rx = {}
for seqn, num in rxq.rxd295.iteritems():
    try:
        val = int(num)
    except ValueError:
        val = 0
    num_rx[seqn] = val

series = pandas.Series(num_rx, name="num_rx")
demoq = demoq.join(series)

import pandas.rpy.common as com
df = com.convert_to_r_dataframe(demoq)
r.assign("demoq", df)
r('lmout <- lm(demoq$num_rx ~ demoq$ridageyr)')  # run the regression
r('print(summary(lmout))')  # print from R
Run Code Online (Sandbox Code Playgroud)

从中R …

python r rpy2 pandas statsmodels

22
推荐指数
2
解决办法
6008
查看次数

pandas DataFrame对角线

什么是获得正方形对角线的有效方法DataFrame.我希望结果是一个SeriesMultiIndex两个级别的,第一个是DataFrame第二个级别的索引是DataFrame.

建立

import pandas as pd
import numpy as np

np.random.seed([3, 1415])
df = pd.DataFrame(np.random.rand(3, 3) * 5,
                  columns = list('abc'),
                  index = list('ABC'),
                  dtype=np.int64
                 )
Run Code Online (Sandbox Code Playgroud)

我想看到这个:

print df.stack().loc[[('A', 'a'), ('B', 'b'), ('C', 'c')]]

A  a    2
B  b    2
C  c    3
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

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

什么是时间测试熊猫和numpy相关解决方案的简单框架

动机

我在这里和那里回答几个问题.我经常测试我和其他人的解决方案有多快.

是否有一个简单的框架来全面了解各种解决方案的速度有多快?

考虑数据帧 df

df = pd.DataFrame({
        'Group': list('QLCKPXNLNTIXAWYMWACA'),
        'Value': [29, 52, 71, 51, 45, 76, 68, 60, 92, 95,
                  99, 27, 77, 54, 39, 23, 84, 37, 99, 87]
    })
Run Code Online (Sandbox Code Playgroud)

我想总结Value按不同值分组的列Group.我有三种方法可以做到这一点.

import pandas as pd
import numpy as np
from numba import njit


def sum_pd(df):
    return df.groupby('Group').Value.sum()

def sum_fc(df):
    f, u = pd.factorize(df.Group.values)
    v = df.Value.values
    return pd.Series(np.bincount(f, weights=v).astype(int), pd.Index(u, name='Group'), name='Value').sort_index()

@njit
def wbcnt(b, w, k):
    bins = np.arange(k)
    bins = …
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

21
推荐指数
3
解决办法
561
查看次数