【python – 即使在使用.loc之后,Pandas仍然会获得SettingWithCopyWarning】教程文章相关的互联网学习教程文章

python – 在pandas数据帧中对重复的列ID进行分组【代码】

现在有很多类似的问题,但大多数都回答了如何删除重复的列.但是,我想知道如何创建元组列表,其中每个元组包含重复列的列名.我假设每列都有一个唯一的名称.只是为了进一步说明我的问题:df = pd.DataFrame({'A': [1, 2, 3, 4, 5],'B': [2, 4, 2, 1, 9],'C': [1, 2, 3, 4, 5],'D': [2, 4, 2, 1, 9],'E': [3, 4, 2, 1, 2],'F': [1, 1, 1, 1, 1]},index = ['a1', 'a2', 'a3', 'a4', 'a5'])然后我想要输出:[('A', 'C'), ('B', 'D')]如果你...

python – Pandas groupby.size vs series.value_counts vs collections.Counter with multiple series【代码】

有许多问题(1,2,3)涉及单个系列中的计数值. 但是,关于计算两个或更多系列组合的最佳方法的问题较少.提出了解决方案(1,2),但没有讨论何时以及为何应该使用每个解决方案. 以下是三种潜在方法的基准测试.我有两个具体问题: >为什么石斑鱼比计数更有效?我预计数量会更高效,因为它在C中实现.即使柱数从2增加到4,石斑鱼的优越性能仍然存在.>为什么value_counter表现得如此糟糕?这是由于从列表构建列表或系列的成本吗? 我理解输出是不...

python – 自然地排序Pandas DataFrame【代码】

我有一个带有索引的pandas DataFrame,我想自然排序. Natsort似乎不起作用.在构建DataFrame之前对索引进行排序似乎没有帮助,因为我对DataFrame的操作似乎搞乱了进程中的排序.关于如何自然地采用指数的任何想法?from natsort import natsorted import pandas as pd# An unsorted list of strings a = ['0hr', '128hr', '72hr', '48hr', '96hr'] # Sorted incorrectly b = sorted(a) # Naturally Sorted c = natsorted(a)# Use a as...

python – 根据Pandas中的列名删除多个列【代码】

我有一些数据,当我导入它时,我得到以下不需要的列我正在寻找一种简单的方法来删除所有这些'Unnamed: 24', 'Unnamed: 25', 'Unnamed: 26', 'Unnamed: 27','Unnamed: 28', 'Unnamed: 29', 'Unnamed: 30', 'Unnamed: 31','Unnamed: 32', 'Unnamed: 33', 'Unnamed: 34', 'Unnamed: 35','Unnamed: 36', 'Unnamed: 37', 'Unnamed: 38', 'Unnamed: 39','Unnamed: 40', 'Unnamed: 41', 'Unnamed: 42', 'Unnamed: 43','Unnamed: 44', 'Unnam...

python – 如何在Pandas DataFrame中将True / False映射到1/0?【代码】

我在python pandas DataFrame中有一个列具有布尔值True / False值,但是为了进一步计算,我需要1/0表示.有快速的熊猫/ numpy方式吗? 编辑:下面的答案在numpy的情况下似乎不成立,给定一个包含整数和True / False值的数组,在这样的数组上返回dtype = object.为了在numpy中继续进行进一步计算,我必须明确设置np_values = np.array(df.values,dtype = np.float64).解决方法:Python中的True为1,同样False为0 *:>>> True == 1 True >>> ...

python – Pandas DataFrame:根据条件替换列中的所有值【代码】

我有一个简单的DataFrame,如下所示: 我想从“第一季”列中选择所有值,并将那些超过1990年的值替换为1.在此示例中,只有Baltimore Ravens将1996年替换为1(保持其余数据完好无损). 我使用了以下内容:df.loc[(df['First Season'] > 1990)] = 1但是,它将该行中的所有值替换为1,而不仅仅是“第一季”列中的值. 如何只替换该列中的值?解决方法:您需要选择该列:In [41]: df.loc[df['First Season'] > 1990, 'First Season'] = 1 dfOut[...

如何使用groupby连接python pandas中的字符串?【代码】

我目前在顶部有数据框.有没有办法使用groupby函数来获取另一个数据帧来对数据进行分组,并使用python pandas将这些单词连接成下面的格式? 谢谢 [解决方法:您可以在groupby之后在列上应用联接:df.groupby('index')['words'].apply(','.join)例:In [326]: df = pd.DataFrame({'id':['a','a','b','c','c'], 'words':['asd','rtr','s','rrtttt','dsfd']}) dfOut[326]:id words 0 a asd 1 a rtr 2 b s 3 c rrttt...

python – 更快速地将Excel文件读取到pandas数据帧【代码】

我有一个14MB Excel file with five worksheets,我正在阅读Pandas数据帧,虽然下面的代码有效,但需要9分钟! 有没有人有加快速度的建议?import pandas as pddef OTT_read(xl,site_name):df = pd.read_excel(xl.io,site_name,skiprows=2,parse_dates=0,index_col=0,usecols=[0,1,2],header=None,names=['date_time','%s_depth'%site_name,'%s_temp'%site_name])return dfdef make_OTT_df(FILEDIR,OTT_FILE):xl = pd.ExcelFile(FILED...

Python pandas按多个索引范围切片数据帧【代码】

什么是通过更多索引范围(例如10:12和25:28)对数据帧进行切片的pythonic方法?我希望以更优雅的方式:df = pd.DataFrame({'a':range(10,100)}) df.iloc[[i for i in range(10,12)] + [i for i in range(25,28)]]结果:a 10 20 11 21 25 35 26 36 27 37像这样的东西会更优雅:df.iloc[(10:12, 25:28)]谢谢!解决方法:你可以使用numpy的r_“切片技巧”:df = pd.DataFrame({'a':range(10,100)}) df.iloc[pd.np.r_[10:12, 25:28]]...

python – 合并pandas数据帧,其中一个值介于两个其他值之间【代码】

参见英文答案 > How to join two dataframes for which column values are within a certain range? 5个我需要在标识符和条件上合并两个pandas数据帧,其中一个数据帧中的日期在另一个数据帧中的两个日期之间. Dataframe A有一个日期(“fdate”)和一个ID(“cusip”): 我需要将此与此数据帧B合并: 在A.cusip上== B.ncusip和A.fdate在B.namedt和B.nameenddt之间. 在SQL中这将是微不足道的,但我能...

python – 如何确定Pandas列是否包含特定值【代码】

我试图确定Pandas列中是否有一个具有特定值的条目.我尝试用df [‘id’]中的if来做到这一点.我认为这是有效的,除非我给它提供了一个我知道不在df [‘id’]列43中的值,它仍然返回True.当我对仅包含与缺失的id df匹配的条目的数据框子集[df [‘id’] == 43]时,显然没有条目.如何确定Pandas数据框中的列是否包含特定值以及为什么我的当前方法不起作用? (仅供参考,当我在这个answer中使用类似的问题时,我遇到同样的问题).解决方法:in o...

python – 在pandas dataframe中插入一行【代码】

我有一个数据帧..s1 = pd.Series([5, 6, 7]) s2 = pd.Series([7, 8, 9])df = pd.DataFrame([list(s1), list(s2)], columns = ["A", "B", "C"])A B C 0 5 6 7 1 7 8 9[2 rows x 3 columns]我需要添加第一行[2,3,4]才能获得..A B C 0 2 3 4 1 5 6 7 2 7 8 9我已经尝试了append()和concat()函数,但不知怎的,我找不到正确的方法如何做到这一点. 有任何想法吗?有没有直接的方法如何添加/插入数据帧系列?解决方法...

python – pandas dataframe,按值复制

我注意到我的程序中有一个错误及其发生的原因是因为看起来pandas通过引用复制pandas数据而不是值.我知道不可变对象将始终通过引用传递,但pandas dataframe不是不可变的,所以我不明白为什么它通过引用传递.有人能提供一些信息吗? 谢谢!安德鲁解决方法:Python中的所有函数都是“按引用传递”,没有“按值传递”.如果要创建pandas对象的显式副本,请尝试new_frame = frame.copy().

python – 在for循环中使用pandas .append【代码】

我将行附加到for循环中的pandas DataFrame,但最后数据帧始终为空.我不想将行添加到数组然后调用DataFrame构造函数,因为我的实际for循环处理大量数据.我也试过pd.concat没有成功.任何人都可以强调我缺少什么使附加语句有效吗?这是一个虚拟的例子:import pandas as pd import numpy as npdata = pd.DataFrame([])for i in np.arange(0, 4):if i % 2 == 0:data.append(pd.DataFrame({'A': i, 'B': i + 1}, index=[0]), ignore_index...

python – 如何计算pandas DataFrame中列中的NaN值【代码】

我有数据,我想在其中找到NaN的数量,因此如果它小于某个阈值,我将删除这些列.我看了,但没能找到任何功能.有value_counts,但对我来说会很慢,因为大多数值都是不同的,我只想要NaN的数量.解决方法:您可以使用isna()方法(或它的别名isnull(),它也与旧的pandas版本<lt; 0.21.0兼容),然后求和以计算nan值.对于一列:="" <="" p=""> In [1]: s = pd.Series([1,2,3, np.nan, np.nan])In [4]: s.isna().sum() # or s.isnull().sum() for ol...