相关疑难解决方法(0)

NaN和None之间有什么区别?

我正在使用pandas读取csv文件的两列,readcsv()然后将值分配给字典.列包含数字和字母的字符串.偶尔会出现一个单元格为空的情况.在我看来,读取到该字典条目的值应该是None,而是nan分配.当然,None它更具描述性,因为它具有空值,而nan只是说读取的值不是数字.

我的理解是否正确,None和之间的区别是nan什么?为什么nan分配而不是None?

此外,我的字典检查任何空单元格一直在使用numpy.isnan():

for k, v in my_dict.iteritems():
    if np.isnan(v):
Run Code Online (Sandbox Code Playgroud)

但是这给了我一个错误,说我不能使用这个检查v.我想这是因为要使用整数或浮点变量,而不是字符串.如果是这样,我该如何检查v"空单元格"/ nan案例?

python numpy nan pandas

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

根据包含字典键替换 Pandas DataFrame 列值

这是一个示例,其中当行是字典键时分配列: /sf/answers/1417569751/

我正在寻找的是当行包含字典键时分配列的情况。

例如(基于上面的例子):

import pandas as pd
df = pd.DataFrame({'col1': {0: 'aba', 1: 'abc', 2: 'abx'}})

#gives me a DataFrame
     col1 
0    aba #contains 'ba'
1    abc #will NOT be replaced
2    abx #contains 'bx'

dictionary = {'ba': 5, 'bx': 8}

#and I need to get:

     col1 
0    5
1    abc
2    8
Run Code Online (Sandbox Code Playgroud)

python dictionary replace dataframe pandas

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

更快地实施pandas应用功能

我有一个pandas dataFrame我想检查一列是否contained在另一列中.

假设:

df = DataFrame({'A': ['some text here', 'another text', 'and this'], 
                'B': ['some', 'somethin', 'this']})
Run Code Online (Sandbox Code Playgroud)

我想检查是否df.B[0]在df.A[0],df.B[1]是否在df.A[1]等

目前的做法

我有以下apply功能实现

df.apply(lambda x: x[1] in x[0], axis=1)
Run Code Online (Sandbox Code Playgroud)

结果是Series的[True, False, True]

这很好,但对于我dataFrame shape(它是数百万)它需要很长时间.
是否有更好(即更快)的植入?

Unsuccesfull方法

我尝试了这种pandas.Series.str.contains方法,但它只能为模式采用字符串.

df['A'].str.contains(df['B'], regex=False)
Run Code Online (Sandbox Code Playgroud)

python string apply pandas

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

Replace()找不到日期,也不会转换为其他字符串

我在csv中有一个数组:

    date        group
0   2015-01-02  WODKA
1   2015-01-02  PIWO
2   2015-01-02  2015-01-02
3   2015-01-03  WODKA
4   2015-01-03  PIWO
5   2015-01-03  2015-01-03
6   2015-01-03  WODKA
7   2015-01-03  PIWO
Run Code Online (Sandbox Code Playgroud)

我想将所有日期从"group"列转换为"sum".但我的代码不起作用......

import pandas as pd
import numpy as np
from datetime import datetime as dt

x = pd.read_csv("C:\\Users\dell\\Desktop\\list_1.csv", sep=';')
x.group = x.group.replace(dt, 'sum')
Run Code Online (Sandbox Code Playgroud)

python pandas

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

标签 统计

pandas ×4

python ×4

apply ×1

dataframe ×1

dictionary ×1

nan ×1

numpy ×1

replace ×1

string ×1