【python – 为什么pandas.DataFrame.update会更改更新数据帧的dtypes?】教程文章相关的互联网学习教程文章

python – 如何在切割其DataFrame后更新pandas MultiIndex的级别?【代码】

我有一个带有pandas MultiIndex的Dataframe:In [1]: import pandas as pd In [2]: multi_index = pd.MultiIndex.from_product([['CAN','USA'],['total']],names=['country','sex']) In [3]: df = pd.DataFrame({'pop':[35,318]},index=multi_index) In [4]: df Out[4]:pop country sex CAN total 35 USA total 318然后我从该DataFrame中删除一些行:In [5]: df = df.query('pop > 100')In [6]: df Out[6]:pop country ...

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 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[...

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 – 为什么在处理DataFrame时我的NLTK功能会变慢?【代码】

我试图在数据集中运行我的百万行的函数. >我在数据帧中读取CSV中的数据>我使用drop list删除我不需要的数据>我通过for循环中的NLTK函数传递它. 码:def nlkt(val):val=repr(val)clean_txt = [word for word in val.split() if word.lower() not in stopwords.words('english')]nopunc = [char for char in str(clean_txt) if char not in string.punctuation]nonum = [char for char in nopunc if not char.isdigit()]words_string...

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...

python – Spark Dataframe区分具有重复名称的列【代码】

正如我在Spark Dataframe中所知,多列的名称可以与下面的数据帧快照中显示的名称相同:[ Row(a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}), a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0})), Row(a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}), a=125231, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0047, 3: 0.0, 4: 0.0043})), Row(a=107831, f=Sp...

python – 按整数索引选择一行pandas系列/ dataframe【代码】

我很好奇为什么不支持df [2],而df.ix [2]和df [2:3]都有效.In [26]: df.ix[2] Out[26]: A 1.027680 B 1.514210 C -1.466963 D -0.162339 Name: 2000-01-03 00:00:00In [27]: df[2:3] Out[27]: A B C D 2000-01-03 1.02768 1.51421 -1.466963 -0.162339我希望df [2]以与df [2:3]相同的方式工作,以与Python索引约定保持一致.是否存在不支持单个整数索引行的设计原因?解决方法:回应@HYRY,请参...

python – 根据涉及len(string)给出KeyError的条件表达式从pandas DataFrame中删除行【代码】

我有一个pandas DataFrame,我想从中删除行,其中特定列中字符串的长度大于2. 我希望能够做到这一点(每this answer):df[(len(df['column name']) < 2)]但我得到错误:KeyError: u'no item named False'我究竟做错了什么? (注意:我知道我可以使用df.dropna()来删除包含任何NaN的行,但是我没有看到如何根据条件表达式删除行.)解决方法:当你执行len(df [‘column name’])时,你只得到一个数字,即DataFrame中的行数(即列本身的长度).如...

python – 替换pandas DataFrame中的列值【代码】

我正在尝试替换数据帧的一列中的值.列(“女性”)仅包含“女性”和“男性”的值. 我尝试过以下方法:w['female']['female']='1' w['female']['male']='0' 但是收到以前结果的完全相同的副本. 理想情况下,我希望获得一些类似于以下循环元素的输出.if w['female'] =='female':w['female'] = '1'; else:w['female'] = '0';我查看了陷阱文档(http://pandas.pydata.org/pandas-docs/stable/gotchas.html),但无法弄清楚为什么没有发生. 任...

python – 将unix时间转换为pandas dataframe中的可读日期【代码】

我有一个包含unix时间和价格的数据框.我想转换索引列,以便在人类可读日期中显示. 因此,例如我在索引列中的日期为1349633705,但我希望它显示为10/07/2012(或至少10/07/2012 18:15). 对于某些上下文,这里是我正在使用的代码以及我已经尝试过的代码:import json import urllib2 from datetime import datetime response = urllib2.urlopen('http://blockchain.info/charts/market-price?&format=json') data = json.load(response) ...

python – 选择两个日期之间的DataFrame行【代码】

我正在从csv创建一个DataFrame,如下所示:stock = pd.read_csv('data_in/' + filename + '.csv', skipinitialspace=True)DataFrame有一个日期列.有没有办法创建一个新的DataFrame(或只是覆盖现有的DataFrame),它只包含日期值在指定日期范围内或两个指定日期值之间的行?解决方法:有两种可能的解决方案: >使用布尔掩码,然后使用df.loc [mask]>将日期列设置为DatetimeIndex,然后使用df [start_date:end_date] 使用布尔掩码: 确保d...

python – 从字符串创建Pandas DataFrame【代码】

为了测试一些功能,我想从字符串创建一个DataFrame.假设我的测试数据如下:TESTDATA="""col1;col2;col3 1;4.4;99 2;4.5;200 3;4.7;65 4;3.2;140 """将数据读入Pandas DataFrame的最简单方法是什么?解决方法:一种简单的方法是使用StringIO.StringIO (python2)或io.StringIO (python3)并将其传递给pandas.read_csv函数.例如:import sys if sys.version_info[0] < 3: from StringIO import StringIO else:from io import StringIOimp...