草庐IT

dataframe

全部标签

python - 按 MultiIndex 级别或子级别切片 pandas DataFrame

灵感来自thisanswer并且缺乏对thisquestion的简单答案我发现自己编写了一些语法糖,以便更轻松地按MultiIndex级别进行过滤。def_filter_series(x,level_name,filter_by):"""Filterapd.Seriesorpd.DataFramexby`filter_by`ontheMultiIndexlevel`level_name`Uses`pd.Index.get_level_values()`inthebackground.`filter_by`iseitherastringoraniterable."""ifisinstan

python - Pandas 在行上设置多索引,然后转置到列

如果我有一个简单的数据框:print(a)onetwothree0A1a1A2b2B1c3B2d4C1e5C2f我可以通过发出以下命令轻松地在行上创建多索引:a.set_index(['one','two'])threeonetwoA1a2bB1c2dC1e2f是否有类似的简单方法来在列上创建多索引?我想结束:oneABCtwo1212120abcdef在这种情况下,创建行多索引然后转置它会非常简单,但在其他示例中,我会想要在行和列上创建多索引。 最佳答案 是的!这称为换位。a.set_index(['one','two']).T让

python - 检查 Pandas 数据框是否是其他数据框的子集

我有两个PythonPandas数据框A、B,它们具有相同的列(显然具有不同的数据)。我想检查A是B的子集,即A的所有行都包含在B中。知道怎么做吗? 最佳答案 方法DataFrame.merge(another_DF)默认情况下在列的交集处合并(使用两个DF中具有相同名称的所有列)并使用how='inner'-所以我们希望在inner之后有相同的行数join(如果两个DF都没有重复项):len(A.merge(B))==len(A)PS如果其中一个DF有重复的行,它将无法正常工作-这种情况见下文演示:In[128]:AOut[128

python - Apache Spark Python 与 DataFrames 的余弦相似度

对于推荐系统,我需要计算整个SparkDataFrame的所有列之间的余弦相似度。在Pandas中,我曾经这样做过:importsklearn.metricsasmetricsimportpandasaspddf=pd.DataFrame(...somedataframeoverhere:D...)metrics.pairwise.cosine_similarity(df.T,df.T)生成列之间的相似度矩阵(因为我使用了转置)有什么方法可以在Spark(Python)中做同样的事情吗?(我需要将其应用于由数千万行和数千列组成的矩阵,所以这就是我需要在Spark中执行的原因)

python - pickle Pandas DataFrame 的最快方法是什么?

使用Pandas内置方法或pickle.dump哪个更好?标准的pickle方法如下所示:pickle.dump(my_dataframe,open('test_pickle.p','wb'))Pandas内置方法如下所示:my_dataframe.to_pickle('test_pickle.p') 最佳答案 感谢@qwwqwwq,我发现pandas有一个用于数据帧的内置to_pickle方法。我做了一个快速时间测试:In[1]:%timeitpickle.dump(df,open('test_pickle.p','wb'))10

python - 在 pandas.drop_duplicates 之后重建索引

我想打开一个文件,读取它,在文件的两列中删除重复项,然后进一步使用没有重复项的文件进行一些计算。为此,我使用了pandas.drop_duplicates,它在删除重复项后也会删除索引值。例如,删除第1行后,file1变为file2:file1:Var1Var2Var3Var40522389165234321513783332467file2:Var1Var2Var3Var4052238921513783332467要进一步将file2用作数据框,我需要将其重新索引为0、1、2...这是我使用的代码:file1=pd.read_csv("filename.txt",sep='|',he

python - 将大型 Pandas DataFrame 写入 SQL Server 数据库

我有74个相对较大的PandasDataFrame(大约34,600行和8列),我试图尽快将它们插入到SQLServer数据库中。在做了一些研究之后,我了解到好的olepandas.to_sql函数不适用于向SQLServer数据库中进行如此大的插入,这是我最初采用的方法(非常慢-将近一个小时应用程序完成与使用mysql数据库时大约4分钟。)Thisarticle,以及许多其他StackOverflow帖子都帮助我指明了正确的方向,但是我遇到了障碍:出于上面链接中解释的原因,我正在尝试使用SQLAlchemy的核心而不是ORM。因此,我使用pandas.to_dict将数据帧转换为字典

python - 如何在 Pandas 中做 'lateral view explode()'

这个问题在这里已经有了答案:Howtounnest(explode)acolumninapandasDataFrame,intomultiplerows(16个答案)关闭3年前。我想这样做:#input:AB0[1,2]101[5,6]-20#output:AB0110121025-2036-20每一列A的值都是一个列表df=pd.DataFrame({'A':[[1,2],[5,6]],'B':[10,-20]})df=pd.DataFrame([[item]+list(df.loc[line,'B':])forlineindf.indexforitemindf.loc[line,'

python - 从具有多个字符串的列制作 get_dummies 类型数据框的最快方法

我有一列“col2”,其中包含一个字符串列表。我当前的代码太慢了,大约有2000个唯一字符串(下例中的字母)和4000行。最终为2000列和4000行。In[268]:df.head()Out[268]:col1col206A,B115C,G,A225B有没有一种快速的方法可以将其转换为getdummies格式?每个字符串都有自己的列,如果该行在col2中有该字符串,则在每个字符串的列中有一个0或1。In[268]:defget_list(df):d=[]forrowindf.col2:row_list=row.split(',')forstringinrow_list:ifstrin

python - Pandas:水平组合两个 DataFrame

这个问题在这里已经有了答案:Concatenaterowsoftwodataframesinpandas(2个答案)关闭5年前。我有两个PandasDataFrame,每个都有不同的列。我想基本上将它们水平粘合在一起(它们每个都有相同的行数,所以这应该不是问题)。一定有一种简单的方法可以做到这一点,但我已经阅读了文档,concat不是我要找的(我不认为)。有什么想法吗?谢谢!