小编And*_*ndy的帖子

如何将Pandas的"apply"功能用于多个列?

当使用具有以下数据帧的多个列时,我在使用Pandas应用函数时遇到一些问题

df = DataFrame ({'a' : np.random.randn(6),
                 'b' : ['foo', 'bar'] * 3,
                 'c' : np.random.randn(6)})
Run Code Online (Sandbox Code Playgroud)

以及以下功能

def my_test(a, b):
    return a % b
Run Code Online (Sandbox Code Playgroud)

当我尝试应用此功能时:

df['Value'] = df.apply(lambda row: my_test(row[a], row[c]), axis=1)
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

NameError: ("global name 'a' is not defined", u'occurred at index 0')
Run Code Online (Sandbox Code Playgroud)

我不明白这个消息,我正确地定义了这个名字.

我非常感谢你对这个问题的任何帮助

更新

谢谢你的帮助.我确实用代码做了一些语法错误,索引应该放''.但是我使用更复杂的功能仍然存在同样的问题,例如:

def my_test(a):
    cum_diff = 0
    for ix in df.index():
        cum_diff = cum_diff + (a - df['a'][ix])
    return cum_diff 
Run Code Online (Sandbox Code Playgroud)

谢谢

python apply dataframe python-2.7 pandas

228
推荐指数
4
解决办法
38万
查看次数

Python Requests包:处理xml响应

我非常喜欢这个requests包及其处理JSON响应的舒适方式.

不幸的是,我不明白我是否也可以处理XML响应.有没有人体验如何使用requests包处理XML响应?是否有必要包含另一个包,例如requestsXML解码?

python xml httprequest python-requests

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

熊猫:没有.最大行数

我在查看以下内容时遇到问题DataFrame:

n = 100
foo = DataFrame(index=range(n))
foo['floats'] = np.random.randn(n)
foo
Run Code Online (Sandbox Code Playgroud)

问题是它不会在ipython笔记本中默认打印所有行,但我必须切片才能查看生成的行.即使以下选项也不会更改输出:

pd.set_option('display.max_rows', 500)
Run Code Online (Sandbox Code Playgroud)

有谁知道如何显示整个阵列?

python formatting pandas ipython-notebook

96
推荐指数
9
解决办法
9万
查看次数

熊猫:两个数据帧的差异

我需要逐行比较两个不同大小的数据帧并打印出不匹配的行.让我们采取以下两点:

df1 = DataFrame({
'Buyer': ['Carl', 'Carl', 'Carl'],
'Quantity': [18, 3, 5, ]})

df2 = DataFrame({
'Buyer': ['Carl', 'Mark', 'Carl', 'Carl'],
'Quantity': [2, 1, 18, 5]})
Run Code Online (Sandbox Code Playgroud)

什么是在df2上逐行排列并打印不在df1中的行的最有效方法,例如:

Buyer     Quantity 
Carl         2
Mark         1
Run Code Online (Sandbox Code Playgroud)

重要提示:我不想要排:

Buyer     Quantity 
Carl         3
Run Code Online (Sandbox Code Playgroud)

包含在差异中:

我已经尝试过: 逐行比较两个不同长度的数据帧,并为每行添加相同值的列, 并将两个Pandas数据帧中的输出差异并排显示 - 突出显示差异

但这些与我的问题不符.

谢谢

安迪

python diff dataframe pandas

39
推荐指数
5
解决办法
5万
查看次数

创建URL而不执行请求

我目前正在使用python请求包来发出JSON请求.不幸的是,我需要查询的服务有每日最大请求限制.对,我知道,我缓存了已执行的请求网址,所以如果我超出这个限制,我知道第二天该在哪里继续.

r = requests.get('http://someurl.com', params=request_parameters)
log.append(r.url)
Run Code Online (Sandbox Code Playgroud)

但是,为了使用这个日志,第二天我需要在实际执行请求之前在我的程序中创建请求URL,这样我就可以将它们与日志中的字符串进行匹配.否则,它会降低我的每日限额.你有谁知道怎么做?我在请求包中找不到任何适当的方法.

python api urlencode python-requests

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

Pandas:获取Series Object中的值标签

如何在pandas Series对象中检索特定值的labe:

例如:

labels = ['a', 'b', 'c', 'd', 'e']
s = Series (arange(5) * 4 , labels)
Run Code Online (Sandbox Code Playgroud)

哪个系列产品:

a     0
b     4
c     8
d    12
e    16
dtype: int64
Run Code Online (Sandbox Code Playgroud)

如何获得价值'12'的标签?谢谢

python series pandas

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

熊猫:将TimeGrouper与另一个Groupby参数结合使用

我有以下DataFrame:

df = pd.DataFrame({
'Branch' : 'A A A A A B'.split(),
'Buyer': 'Carl Mark Carl Joe Joe Carl'.split(),
'Quantity': [1,3,5,8,9,3],
'Date' : [
DT.datetime(2013,1,1,13,0),
DT.datetime(2013,1,1,13,5),
DT.datetime(2013,10,1,20,0),
DT.datetime(2013,10,2,10,0),
DT.datetime(2013,12,2,12,0),                                      
DT.datetime(2013,12,2,14,0),
]})

from pandas.tseries.resample import TimeGrouper
Run Code Online (Sandbox Code Playgroud)

如何使用TimeGrouper在分支机构和20天内对这些数据进行分组?

我以前的所有尝试都失败了,因为我无法将TimeGrouper与groupby函数中的另一个参数组合在一起.

我非常感谢你的帮助.

谢谢

安迪

python group-by pandas

10
推荐指数
2
解决办法
7465
查看次数

熊猫:在Dataframe子集上使用iterrows

使用DataFrame的子集进行iterrows的最佳方法是什么?

我们来看以下简单示例:

import pandas as pd

df = pd.DataFrame({
  'Product': list('AAAABBAA'),
  'Quantity': [5,2,5,10,1,5,2,3],
  'Start' : [
      DT.datetime(2013,1,1,9,0),
      DT.datetime(2013,1,1,8,5),
      DT.datetime(2013,2,5,14,0),
      DT.datetime(2013,2,5,16,0),
      DT.datetime(2013,2,8,20,0),                                      
      DT.datetime(2013,2,8,16,50),
      DT.datetime(2013,2,8,7,0),
      DT.datetime(2013,7,4,8,0)]})

df = df.set_index(['Start'])
Run Code Online (Sandbox Code Playgroud)

现在我想使用itterrows函数修改此DataFrame的子集,例如:

for i, row_i in df[df.Product == 'A'].iterrows():
    row_i['Product'] = 'A1' # actually a more complex calculation
Run Code Online (Sandbox Code Playgroud)

但是,这些变化并不存在.

是否有可能(使用索引'i'进行手动查找除外)对原始Dataframe进行持久更改?

python loops subset pandas

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

Pandas:列的指数平滑功能

我有以下DataFrame与交易数据:

df = pd.DataFrame({
'Trader': 'Carl Mark Carl Joe Mark Carl Max Max'.split(),
'Quantity': [5,2,5,10,1,5,2,1],
'Date' : [
DT.datetime(2013,1,1,13,0),
DT.datetime(2013,1,1,13,5),
DT.datetime(2013,2,5,20,0),
DT.datetime(2013,2,6,10,0),
DT.datetime(2013,2,8,12,0),                                      
DT.datetime(2013,3,7,14,0),
DT.datetime(2013,6,4,14,0),
DT.datetime(2013,7,4,14,0),
]})

df.index = [df.Date, df.Trader]
Run Code Online (Sandbox Code Playgroud)

我希望计算每个交易者的平均订单量的每周统计数据.为此,我目前正在卸载交易者列并使用以下方式重新采样数据:

df.unstack('Trader').resample('1W', how='mean').fillna(0)
Run Code Online (Sandbox Code Playgroud)

是否有可能为每个交易者编制一个具有交易量趋势函数的列(最好是基于交易者先前交易的指数平滑函数)?

谢谢

安迪

python statistics pandas

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

Python:最快的方式来比较数组元素

我正在寻找输出Python中两个数组的第一个差异的索引的最快方法.例如,让我们采用以下两个数组:

test1 = [1, 3, 5, 8]
test2 = [1]
test3 = [1, 3]
Run Code Online (Sandbox Code Playgroud)

比较test1test2,我想输出1,而test1和test3的比较应该输出2.

换句话说,我寻找相当于声明:

import numpy as np
np.where(np.where(test1 == test2, test1, 0) == '0')[0][0] 
Run Code Online (Sandbox Code Playgroud)

具有不同的阵列长度.

任何帮助表示赞赏.

python arrays numpy

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

Pandas:Set_index函数不会删除列

我有以下DataFrame:

df = pd.DataFrame({
'Trader': 'Carl Mark Carl Joe Joe Carl Joe Carl'.split(),
'Product': list('AAAABBAA'),
'Quantity': [5,2,5,10,1,5,2,3],
'Start' : [
    DT.datetime(2013,1,1,9,0),
    DT.datetime(2013,1,1,8,5),
    DT.datetime(2013,2,5,14,0),
    DT.datetime(2013,2,5,16,0),
    DT.datetime(2013,2,8,20,0),                                      
    DT.datetime(2013,2,8,16,50),
    DT.datetime(2013,2,8,7,0),
    DT.datetime(2013,7,4,8,0)]})
Run Code Online (Sandbox Code Playgroud)

当我尝试通过以下方式输入索引时:

df = df.set_index([df.Start, df.Trader, df.Product])
Run Code Online (Sandbox Code Playgroud)

它不会删除用于索引的列.即使我明确指定它使用:

df = df.set_index([df.Start, df.Trader, df.Product], drop=True)
Run Code Online (Sandbox Code Playgroud)

这是一个错误还是我的代码中有错误?

谢谢

安迪

python indexing pandas

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

statsmodels:使用patsy指定非线性回归模型

我正在尝试使用statsmodles计算非线性回归模型.特别是我在学习patsy语法时遇到了问题.

是否有任何教程或示例如何使用patsy语法制定非线性模型?

特别是,如何使用patsy指定此示例中的非线性模型(http://statsmodels.sourceforge.net/devel/examples/generated/example_ols.html)?

非常感谢你提前

安迪

python regression statsmodels

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

R:XLConnect 不传递变量名称

我想将线性模型计算的结果从 R 传递到 Excel 中的工作表。为此,我将 XLConnect 与以下代码一起使用:

x <- 1000:2000
y <- 3*x+rnorm(length(x))
fit <- lm(y~x-1)
result <- summary(fit)$coeff

print(result)

require(XLConnect)
wb <- loadWorkbook("/Users/andreas/test1.xls", create = TRUE)
createSheet(wb, name = "test")
writeWorksheet(wb, result, sheet = "test", startRow = 1, startCol = 1)
saveWorkbook(wb)
Run Code Online (Sandbox Code Playgroud)

但是,问题是 XLConnect 不会将系数的名称传递给 Excel(此处:x),尽管它们已正确打印出来。

有人对这个问题有想法吗?

我将不胜感激任何帮助。

安迪

excel r xlconnect

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