我将csv文件读入pandas数据帧,并希望将带有二进制答案的列从yes/no字符串转换为1/0的整数.下面,我展示了一个这样的列("sampleDF"是pandas数据帧).
In [13]: sampleDF.housing[0:10]
Out[13]:
0 no
1 no
2 yes
3 no
4 no
5 no
6 no
7 no
8 yes
9 yes
Name: housing, dtype: object
Run Code Online (Sandbox Code Playgroud)
非常感谢帮助!
在Python中,一般来说,可散列集合的成员资格最好通过测试set.我们知道这一点,因为哈希的使用为我们提供了O(1)查找复杂度,而O(n)为list或np.ndarray.
在Pandas中,我经常需要检查非常大的集合中的成员资格.我推测同样适用,即检查一个系列中的每个项目的成员资格set比使用list或更有效np.ndarray.但是,情况似乎并非如此:
import numpy as np
import pandas as pd
np.random.seed(0)
x_set = {i for i in range(100000)}
x_arr = np.array(list(x_set))
x_list = list(x_set)
arr = np.random.randint(0, 20000, 10000)
ser = pd.Series(arr)
lst = arr.tolist()
%timeit ser.isin(x_set) # 8.9 ms
%timeit ser.isin(x_arr) # 2.17 ms
%timeit ser.isin(x_list) # 7.79 ms
%timeit np.in1d(arr, x_arr) # 5.02 ms
%timeit [i in x_set for i in lst] # 1.1 ms
%timeit …Run Code Online (Sandbox Code Playgroud) 我有一个函数数组,我正在尝试生成一个函数,该函数由我的数组中的元素组成.我的方法是:
def compose(list):
if len(list) == 1:
return lambda x:list[0](x)
list.reverse()
final=lambda x:x
for f in list:
final=lambda x:f(final(x))
return final
Run Code Online (Sandbox Code Playgroud)
这种方法似乎不起作用,将不胜感激.
(我正在颠倒列表,因为这是我想要函数的组合顺序)
python functional-programming composition function-composition
有没有办法用strptime解析"+00:00"格式的时区?例如:
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (In
tel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import datetime
>>> datetime.strptime("12:34:56+0000", "%X%z")
datetime.datetime(1900, 1, 1, 12, 34, 56, tzinfo=datetime.timezone.utc)
>>> datetime.strptime("12:34:56+00:00", "%X%z")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python34\lib\_strptime.py", line 500, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "C:\Python34\lib\_strptime.py", line 337, in _strptime
(data_string, format))
ValueError: time data '12:34:56+00:00' does not match …Run Code Online (Sandbox Code Playgroud) 使用样本数据:
df = pd.DataFrame({'key1' : ['a','a','b','b','a'],
'key2' : ['one', 'two', 'one', 'two', 'one'],
'data1' : np.random.randn(5),
'data2' : np. random.randn(5)})
Run Code Online (Sandbox Code Playgroud)
DF
data1 data2 key1 key2
0 0.361601 0.375297 a one
1 0.069889 0.809772 a two
2 1.468194 0.272929 b one
3 -1.138458 0.865060 b two
4 -0.268210 1.250340 a one
Run Code Online (Sandbox Code Playgroud)
我试图找出如何按key1对数据进行分组,并仅将key2等于'one'的data1值相加.
这是我尝试过的
def f(d,a,b):
d.ix[d[a] == b, 'data1'].sum()
df.groupby(['key1']).apply(f, a = 'key2', b = 'one').reset_index()
Run Code Online (Sandbox Code Playgroud)
但这给了我一个"无"值的数据框
index key1 0
0 a None
1 b None
Run Code Online (Sandbox Code Playgroud)
这里有什么想法?我正在寻找与以下SQL相当的Pandas:
SELECT Key1, SUM(CASE WHEN …Run Code Online (Sandbox Code Playgroud) 我有一个熊猫系列
object x
Ezh2 2
Hmgb 7
Irf1 1
Run Code Online (Sandbox Code Playgroud)
我想将此保存为一个数据框,其中包含列名Gene和Count,我试过了
x_df = pd.DataFrame(x,columns = ['Gene','count'])
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我想要的最终形式是
Gene Count
Ezh2 2
Hmgb 7
Irf1 1
Run Code Online (Sandbox Code Playgroud)
你能建议怎么做吗?
我正在尝试将列表数据结构转换为字典字典.
该清单定义如下:
l = [
['PP','Ear-rings', 'Holesovice', 2000],
['PP','Skirts', 'Holesovice', 1000],
['PP','Dresses', 'E-shop', 1500],
['BM','Butterfly', 'Holesovice', 1600]
]
Run Code Online (Sandbox Code Playgroud)
我的目标是使字典结构如下:
#{'PP' : {'Holesovice' : {'Ear-rings' : 2000, 'Skirts' : 1000},
# 'E-shop' : {'Dresses' : 1500}},
# 'BM' : {'Holesovice' : {'Butterfly' : 1600}}
#}
Run Code Online (Sandbox Code Playgroud)
这段代码不会返回所需的输出:
labels_d = {}
items_d = {}
shops_d = {}
for index, row in enumerate(l):
items_d[row[1]] = row[3]
shops_d[row[2]] = items_d
labels_d[row[0]] = shops_d
print(labels_d)
Run Code Online (Sandbox Code Playgroud)
我在这里和这里找到了一些处理将列表转换为字典的帖子,但我并没有按照我想要的方式使它工作.有没有"干净"的方式如何实现上面公布的结构?
我有这种格式的巨大元组列表.每个元组的第二个字段是类别字段.
[(1, 'A', 'foo'),
(2, 'A', 'bar'),
(100, 'A', 'foo-bar'),
('xx', 'B', 'foobar'),
('yy', 'B', 'foo'),
(1000, 'C', 'py'),
(200, 'C', 'foo'),
..]
Run Code Online (Sandbox Code Playgroud)
将其分解为同一类别(A,B,C等)的子列表的最有效方法是什么?
对于Series对象(让我们称之为s),pandas提供了三种类型的寻址.
s.iloc [] - 用于整数位置寻址;
s.loc [] - 用于索引标签寻址; 和
s.ix [] - 用于整数位置和标签寻址的混合.
pandas对象还直接执行ix寻址.
# play data ...
import string
idx = [i for i in string.uppercase] # A, B, C .. Z
t = pd.Series(range(26), index=idx) # 0, 1, 2 .. 25
# examples ...
t[0] # --> 0
t['A'] # --> 0
t[['A','M']] # --> [0, 12]
t['A':'D'] # --> [0, 1, 2, 3]
t.iloc[25] # --> 25
t.loc['Z'] # --> 25
t.loc[['A','Z']] # --> [0, 25] …Run Code Online (Sandbox Code Playgroud) python ×9
pandas ×5
series ×3
dataframe ×2
list ×2
codeblocks ×1
composition ×1
datetime ×1
debugging ×1
dictionary ×1
grouping ×1
nested ×1
numpy ×1
performance ×1
python-3.x ×1
sorting ×1
string ×1
strptime ×1