我正在使用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案例?
这是一个示例,其中当行是字典键时分配列: /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) 我有一个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(它是数百万)它需要很长时间.
是否有更好(即更快)的植入?
我尝试了这种pandas.Series.str.contains方法,但它只能为模式采用字符串.
df['A'].str.contains(df['B'], regex=False)
Run Code Online (Sandbox Code Playgroud) 我在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)