小编ayh*_*han的帖子

python pandas .apply() 函数索引错误

我有以下数据帧:

                              P     N  ID  Year  Month
TS                                                    
2016-06-26 19:30:00  263.600006   5.4   5  2016      6
2016-06-26 20:00:00  404.700012   5.6   5  2016      6
2016-06-26 21:10:00  438.600006   6.0   5  2016      6
2016-06-26 21:20:00  218.600006   5.6   5  2016      6
2016-07-02 16:10:00  285.300049  15.1   5  2016      7
Run Code Online (Sandbox Code Playgroud)

我正在尝试根据列的值YearMonth类似以下内容添加一个新列

def exp_records(row):
    return calendar.monthrange(row['Year'], row['Month'])[1]
df['exp_counts'] = df.apply(exp_records, axis=1)
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

类型错误:('预期整数参数,得到浮点','发生在索引 2016-06-26 19:30:00')

但是reset_index(),如果我是整数,那么上述.apply()工作正常。这是预期的行为吗?

我在 Python 3.4 中使用 Pandas 0.19.1


重新创建 DataFrame 的代码:

s = '''
TS,P,N,ID,Year,Month
2016-06-26 19:30:00,263.600006,5.4,5,2016,6 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

如何从Python中的嵌套列表创建字典?

我希望可能有一些使用理解来做到这一点,但是说我的数据看起来像这样:

data = [['a', 'b', 'c'], [1, 2, 3], [4, 5, 6]]
Run Code Online (Sandbox Code Playgroud)

我的最终目标是创建一个字典,其中第一个嵌套列表包含键,其余列表包含值:

{'a': [1, 4], 'b': [2, 5], 'c': [3, 6]}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了类似这样的东西让我接近,但是你可以告诉我在字典值中附加列表时遇到问题,这段代码只是覆盖:

d = {data[0][c]: [] + [col] for r, row in enumerate(data) for c, col in enumerate(row)}
>>> d
{'c': [6], 'a': [4], 'b': [5]}
Run Code Online (Sandbox Code Playgroud)

python python-3.x dictionary-comprehension

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

在Python Pandas DataFrame中向数字添加千位分隔符的简单方法

假设我有一个pandas数据框,并且想对所有数字(整数和浮点数)添加千位分隔符,那么有什么简便快捷的方法呢?

python separator number-formatting pandas

2
推荐指数
3
解决办法
6069
查看次数

在 Pandas 中高效编辑字符串并转换为浮点数

我有一个大数据集(appx 1GB,例如在字符串 '20000-30000' 中给出了一列薪水范围。我想删除连字符后的所有内容并转换为浮点数。但是这并不总是存在,所以我还需要在那里有一些条件来检查它是否在那里。

除了遍历整个列单独转换每个列之外,是否有一种快速的 Pandas 方法可以做到这一点?我觉得必须有,因为这似乎是一个常见问题,但是类似的问题并不能解决大型数据集的问题。

示例输入将是:

df = pd.DataFrame({'salary': ['200 - 300', '400', '400-500', '600', '-']})

df
Out: 
      salary
0  200 - 300
1        400
2    400-500
3        600
4          -
Run Code Online (Sandbox Code Playgroud)

对于这些值,首选输出是:

   salary
0     200
1     400
2     400
3     600
4       0
Run Code Online (Sandbox Code Playgroud)

0真的可以是任何填充物的价值,我只是选择0

python data-analysis python-3.x pandas

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

如何从列表项更新字典?

我有以下问题:

想象一下,我杀死了一条龙并且它掉落了战利品,我如何从战利品中更新我的库存?我想如果库存中不存在战利品但如果他们已经存在,如何追加,我不知道如何更新它.

以下是代码:

UserInventory = {'rope': 1, 'torch':6, 'gold coin':42, 'dagger': 1, 'arrow': 12}

def showstuff(storeno):
items_total = 0
for k, v in storeno.items():
    print('Item :' + k + '---' + str(v))
    items_total = items_total + v
print('Total Items:' + str(items_total))

'''def addstuff(inventory, additem):
    I'm not sure what to do here

dragonloot = ['gold coin', 'gold coin', 'rope']
addstuff(UserInventory, dragonloot)'''
showstuff(UserInventory)
Run Code Online (Sandbox Code Playgroud)

python dictionary list

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

python - 将整数列表拆分为数字列表

我有一个包含8位整数的列表,其中每个整数代表一个标志.例如:

qc = [11221427, 23414732, 144443277,...]
Run Code Online (Sandbox Code Playgroud)

我想创建8个新变量,其中第一个变量是所有数字的第一个数字,依此类推.例如:

qc1 = [1,2,1]
qc2 = [1,3,4]
Run Code Online (Sandbox Code Playgroud)

我可以使用以下代码计算它:

qc_str = [str(e) for e in qc]

k,l = 0,0

for item in qc_str:
    qc1[k] = int(qc_str[k][l])
    qc2[k] = int(qc_str[k][l+1])
    qc3[k] = int(qc_str[k][l+2])
    qc4[k] = int(qc_str[k][l+3])
    qc5[k] = int(qc_str[k][l+4])
    qc6[k] = int(qc_str[k][l+5])
    qc7[k] = int(qc_str[k][l+6])
    qc8[k] = int(qc_str[k][l+7])

    k += 1
Run Code Online (Sandbox Code Playgroud)

运行100,000行需要花费大量时间.是否有更好或更快的方式.任何想法将不胜感激.

python list

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

在Python中用字符串创建dict

在我的Python程序中,我有一个格式的字符串:

'name': 'Salman','age': '25', 'access': 'R', 'id': '00125'
Run Code Online (Sandbox Code Playgroud)

我想将其转换为dict类型,这样我可以查询想dict["name"]获得"Salman"打印.

python string dictionary

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

Python里面列表的排序列表

我有以下列表结构:

[
    {'key1': 'value1', 
     'key2': [['mike', 'simmons', '54:17:47']], 
     'key3': 19390},
    {'key1': 'value1', 
     'key2': [['snart', 'simmons', '60:12:47']], 
     'key3': 19390}
]
Run Code Online (Sandbox Code Playgroud)

我想通过key2键的第二个索引对此列表进行排序(我的意思是,通过那些60:12:47的数字)

我还没有找到一种标准的做法.

谢谢!

python sorting dictionary list

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

从嵌套列表创建 Panda DataFrame

我正在尝试从嵌套列表创建一个 panda 数据框,其中包含下面的 ndarray :

from numpy import array
a = list([[1,2],[2,3]])                  
a[0] = array([[1,2]])
a[0][0] = array([1,2])
Run Code Online (Sandbox Code Playgroud)

我想要实现的目标如下:

 D0    D1  
 1     2   
 2     3
Run Code Online (Sandbox Code Playgroud)

我试过只使用

pd.DataFrame(a)
Run Code Online (Sandbox Code Playgroud)

这创造了

   D0      
 [1,2]        
 [2,3]     
Run Code Online (Sandbox Code Playgroud)

我还尝试在 for 循环内使用 pd.append

for i in range(0, len(a)):
  df = df.append(pd.DataFrame(a[i]))
Run Code Online (Sandbox Code Playgroud)

它实现了我想要的,但速度非常慢,并且 df.append 不知何故创建了重复项。

请帮忙。

提前谢谢。

python dataframe pandas

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

当一个 Series 传递给 Numpy 的 exp() 函数时,为什么会返回一个 Series?

除非 numpy 本身被编程为在将 Series 传递给它时返回一个 Series,否则会非常混乱。然而,关于这个函数的文档并没有提到当一个 Series 传递给它时它会返回一个 Series 。

了解我来自 Java 背景并且我是 Python 新手。

python numpy pandas

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