Questions tagged «pandas»

Pandas是用于数据处理和分析的Python库,例如,在统计,实验科学结果,计量经济学或金融学中常见的数据框,多维时间序列和横截面数据集。Pandas是Python中主要的数据科学库之一。

2
PANDAS绘制多个Y轴
我知道熊猫支持次要Y轴,但我很好奇是否有人知道将三次Y轴放置在地块上的方法...目前,我正在使用numpy + pyplot来实现这一点...但是对于大数据集来说它的速度很慢。 这是为了在同一张图上绘制具有不同单位的不同测量值以便于比较(例如,相对湿度/温度/和电导率) 所以真的很好奇是否有人在pandas没有太多工作的情况下就能做到这一点。 [编辑]我怀疑是否有办法做到这一点(没有太多的开销),但是我希望被证明是错误的,这可能是matplotlib的局限性...
73 python  pandas 

9
熊猫数据框总行
我有一个数据框,类似: foo bar qux 0 a 1 3.14 1 b 3 2.72 2 c 2 1.62 3 d 9 1.41 4 e 3 0.58 我想在数据框的末尾添加一个“总计”行: foo bar qux 0 a 1 3.14 1 b 3 2.72 2 c 2 1.62 3 d 9 1.41 4 e 3 0.58 5 tot …
73 python  pandas 

3
如何在熊猫中对数据框进行分组并保留列
给定一个记录某些书籍使用情况的数据框,如下所示: Name Type ID Book1 ebook 1 Book2 paper 2 Book3 paper 3 Book1 ebook 1 Book2 paper 2 我需要获取所有书籍的数量,保留其他列并获取以下内容: Name Type ID Count Book1 ebook 1 2 Book2 paper 2 2 Book3 paper 3 1 如何才能做到这一点? 谢谢!
73 python  pandas 


11
Python:Pandas Dataframe如何将整个列与标量相乘
如何将数据框给定列的每个元素与标量相乘?(我曾尝试过寻找SO,但似乎找不到正确的解决方案) 做类似的事情: df['quantity'] *= -1 # trying to multiply each row's quantity column with -1 给我警告: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead 注意:如果可能的话,我不想遍历数据框并执行类似的操作...因为我认为整个列上的任何标准数学运算都可以实现,而不必编写循环: for idx, row in df.iterrows(): df.loc[idx, 'quantity'] *= -1 编辑: 我正在跑步0.16.2熊猫 …

5
Python Pandas复制数据框中的行
如果数据如下所示: Store,Dept,Date,Weekly_Sales,IsHoliday 1,1,2010-02-05,24924.5,FALSE 1,1,2010-02-12,46039.49,TRUE 1,1,2010-02-19,41595.55,FALSE 1,1,2010-02-26,19403.54,FALSE 1,1,2010-03-05,21827.9,FALSE 1,1,2010-03-12,21043.39,FALSE 1,1,2010-03-19,22136.64,FALSE 1,1,2010-03-26,26229.21,FALSE 1,1,2010-04-02,57258.43,FALSE 我想复制IsHoliday等于TRUE的行,我可以这样做: is_hol = df['IsHoliday'] == True df_try = df[is_hol] df=df.append(df_try*10) 但是是否有更好的方法来执行此操作,因为我需要将假日行重复5次,如果使用上述方法,则必须追加5次。

4
熊猫“只能比较标记相同的DataFrame对象”错误
我正在使用Pandas比较加载到两个数据帧(uat,prod)中的两个文件的输出:... uat = uat[['Customer Number','Product']] prod = prod[['Customer Number','Product']] print uat['Customer Number'] == prod['Customer Number'] print uat['Product'] == prod['Product'] print uat == prod The first two match exactly: 74357 True 74356 True Name: Customer Number, dtype: bool 74357 True 74356 True Name: Product, dtype: bool 对于第三次打印,我得到一个错误:只能比较标记相同的DataFrame对象。如果前两个比较好,第三个有什么问题? 谢谢
72 python  pandas 

2
熊猫:向多索引列数据框添加列
我想将一列添加到multiindex列数据框的第二级。 In [151]: df Out[151]: first bar baz second one two one two A 0.487880 -0.487661 -1.030176 0.100813 B 0.267913 1.918923 0.132791 0.178503 C 1.550526 -0.312235 -1.177689 -0.081596 直接分配的通常技巧不起作用: In [152]: df['bar']['three'] = [0, 1, 2] In [153]: df Out[153]: first bar baz second one two one two A 0.487880 …

2
在熊猫中放置多列
我正在尝试使用以下代码在熊猫数据框中按索引号删除多列(数据集中的第2列和第70列,分别索引为1和69): df.drop([df.columns[[1, 69]]], axis=1, inplace=True) 我收到以下错误: TypeError: unhashable type: 'Index' 在我的代码中,[1,69]突出显示并说: Expected type 'Integral', got 'list[int]' instead 下面的代码完成了我希望它成功完成的工作,但是在两行重复的代码上(首先删除col索引69,然后删除1,顺序很重要,因为删除之前的列会更改后面的列的索引)。我以为我可以简单地将多个列索引指定为一个列表,但是上面我可能有问题吗? df.drop([df.columns[69]], axis=1, inplace=True) df.drop([df.columns[1]], axis=1, inplace=True) 有没有一种方法可以像上面的第一个代码片段一样在一行上执行此操作?
72 python  pandas 

6
Python:Pandas根据字符串长度过滤字符串数据
我喜欢过滤掉字符串长度不等于10的数据。 如果我尝试过滤掉列A或B的字符串长度不等于10的任何行,则尝试这样做。 df=pd.read_csv('filex.csv') df.A=df.A.apply(lambda x: x if len(x)== 10 else np.nan) df.B=df.B.apply(lambda x: x if len(x)== 10 else np.nan) df=df.dropna(subset=['A','B'], how='any') 这工作缓慢,但正在工作。 但是,当A中的数据不是字符串而是数字(在read_csv读取输入文件时解释为数字)时,有时会产生错误。 File "<stdin>", line 1, in <lambda> TypeError: object of type 'float' has no len() 我相信应该有更高效,更优雅的代码来代替。 根据下面的答案和评论,我找到的最简单的解决方案是: df=df[df.A.apply(lambda x: len(str(x))==10] df=df[df.B.apply(lambda x: len(str(x))==10] 要么 df=df[(df.A.apply(lambda x: len(str(x))==10) & …
72 python  string  pandas  csv  filter 

6
Python Pandas:读取Excel文件时如何指定数据类型?
我正在使用该pandas.read_excel()功能将Excel文件导入到熊猫数据框。 列之一是表格的主键:是所有数字,但以文本形式存储(Excel单元格左上角的绿色小三角形确认了这一点)。 但是,当我将文件导入pandas数据框时,该列将作为浮点导入。这意味着,例如“ 0614”变为614。 导入列时是否可以指定数据类型?我知道在导入CSV文件时这是可能的,但找不到的语法read_excel()。 我能想到的唯一解决方案是在Excel中的文本开头添加一个任意字母(将“ 0614”转换为“ A0614”),以确保将列作为文本导入,然后切掉“ A”在python中,因此我可以将其与我从SQL导入的其他表进行匹配。

2
Python:Pandas系列-为什么使用loc?
为什么我们对熊猫数据框使用“ loc”?似乎以下代码无论是否使用loc都以模拟速度运行 %timeit df_user1 = df.loc[df.user_id=='5561'] 100 loops, best of 3: 11.9 ms per loop 要么 %timeit df_user1_noloc = df[df.user_id=='5561'] 100 loops, best of 3: 12 ms per loop 那为什么要使用loc? 编辑:这已被标记为重复问题。但是,尽管熊猫iloc vs ix vs loc的解释?确实提到* 您可以只使用数据框的getitem进行列检索 : * df['time'] # equivalent to df.loc[:, 'time'] 尽管它确实解释了loc的许多功能,但它并没有说明我们为什么使用loc,但我的特定问题是“为什么不完全省略loc”?为此,我在下面接受了非常详细的答案。 另外,其他帖子的答案(我认为不是答案)在讨论中非常隐蔽,任何搜索我正在寻找的人的人都会发现很难找到信息,并且提供的答案会更好地为您服务我的问题。
71 python  pandas  series  loc 

6
熊猫:删除连续的重复项
在大熊猫中仅丢弃连续重复项的最有效方法是什么? drop_duplicates提供了以下内容: In [3]: a = pandas.Series([1,2,2,3,2], index=[1,2,3,4,5]) In [4]: a.drop_duplicates() Out[4]: 1 1 2 2 4 3 dtype: int64 但是我想要这个: In [4]: a.something() Out[4]: 1 1 2 2 4 3 5 2 dtype: int64
71 python  pandas 

4
在datetime和Pandas Timestamp对象之间转换
我有以下内容: > date1 Timestamp('2014-01-23 00:00:00', tz=None) > date2 datetime.date(2014, 3, 26) 我读了这个答案,我可以用它pandas.to_datetime()来转换Timestamps成datetime对象,但似乎不起作用: > pd.to_datetime(date1) Timestamp('2014-01-23 00:00:00', tz=None) 为什么?如何在这两种格式之间转换?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.