草庐IT

Dataframe

全部标签

python - 在 pandas 中使用 groupby 进行 bool 运算

我想以特定方式使用pandas.groupby。给定一个包含两个bool列(分别称为col1和col2)和一个id列的DataFrame,我想按以下方式添加一列:对于每个条目,如果(col2为True)并且(col1对于任何具有相同ID的条目为True)则分配True。否则为假。我做了一个简单的例子:df=pd.DataFrame([[0,1,1,2,2,3,3],[False,False,False,False,False,False,True],[False,True,False,False,True,True,False]]).transpose()df.columns=['id

python - 在 Pandas 中查找数字列名称

我需要在Pandas中选择列名称中仅包含数值的列,例如:df=01234window_labelnext_statesids017.018.016.015.015.0dddddd13.0118.016.015.015.016.0dddddd13.0216.015.015.016.015.0dddddd13.0315.015.016.015.017.0dddddd13.0415.016.015.017.0NaNdddddd13.0所以我只需要选择前五列。像这样的东西:df[df.columns.isnumeric()]编辑我想到了解决方案:digit_column_names=[numf

python - Pandas 数据框中值的组合

这是我的Pandas数据框:ItemSupport_Count0BREAD41MILK42DIAPER43BEER3我将如何从第1列“项目”中生成2组和3组项目的所有可能的唯一组合。示例(2项集):(面包,牛奶),(面包,尿布),(面包,啤酒),(牛奶,尿布)等示例(3个项目集):(BREAD,MILK,DIAPER),(BREAD,MILK,BEER),(MILK,DIAPER,BEER)等 最佳答案 您可以使用itertools库:importitertoolslist(itertools.combinations(df['It

python - 日志文件到 Pandas Dataframe

我有日志文件,其中有很多行的形式:LogLevel[13/10/201500:30:00.650][MessageText]我的目标是将日志文件中的每一行转换成一个漂亮的数据框。我已经厌倦了这样做,通过拆分[字符上的行,但是我仍然没有得到一个整洁的数据框。我的代码:level=[]time=[]text=[]withopen(filename)asinf:forlineininf:parts=line.split('[')iflen(parts)>1:level=parts[0]time=parts[1]text=parts[2]print(parts[0],parts[1],part

python - 忽略索引的两个数据帧的快速减法(Python)

如何以最快的方式减去忽略索引的2个数据帧。例如,我想减去:d1=x10-3.1415930-3.1415930-3.1415931-2.4434611-2.443461来自d2=x21-2.4434612-1.7453293-1.0471984-0.34906620.349066我尝试过的:我可以这样做,例如:dsub=d1.reset_index(drop=True)-d2.reset_index(drop=True)但是,我想以最有效的方式进行减法。我一直在四处寻找答案,但我只看到了不考虑速度的解决方案。我该如何实现?编辑根据一些答案,以下是在我的机器上运行的一些时间:对于较小的数

python - 将 API 转换为 Pandas DataFrame

我想将API调用转换为pandasdataframe。此刻,API非常杂乱无章,我想合并pandas以使其更易于阅读/编辑/操作。我尝试了以下操作:r=requests.get('http://api.football-data.org/v1/competitions/398/teams')x=r.json()df=pd.read_json(x)printdf但收到:TypeError:ExpectedStringorUnicode 最佳答案 pd.read_json需要一个字符串。但是,r.json()返回一个字典对象。在您的情况

python - self 加入 Pandas

我想对Pandas数据框执行自连接,以便将某些行附加到原始行。每行都有一个标记“i”,指示应在右侧附加哪一行。d=pd.DataFrame(['A','B','C'],columns=['some_col'])d['i']=[2,1,1]In[17]:dOut[17]:some_coli0A21B12C1期望的输出:some_colisome_col_y0A2C1B1B2C1B也就是说,第2行附加到第0行,第1行附加到第1行,第1行附加到第2行(如i所示)。我的想法是pd.merge(d,d,left_index=True,right_on='i',how='left')但它会产生完全

python - 向 DataFrame 添加多个列并将它们设置为等于现有列

我想将多个列添加到pandasDataFrame并将它们设置为等于现有列。有没有简单的方法可以做到这一点?在R中我会这样做:df在pandas中,这会导致KeyError:"['b''c']notinindex":df=pd.DataFrame({'a':np.arange(1,6)})df[['b','c']]=df.a 最佳答案 你可以使用.assign()方法:In[31]:df.assign(b=df['a'],c=df['a'])Out[31]:abc01111222233334444555或者更有创意的方法:In[41]

python - 检查列表中的单词并删除 pandas dataframe 列中的那些单词

我有一个列表如下,remove_words=['abc','deff','pls']以下是我拥有的列名称为“string”的数据框data['string']0abcstackoverflow1abc1232deffcomedy3definitely4plslkjh5pls1234我想检查pandasdataframe列中remove_words列表中的单词,并删除pandasdataframe中的这些单词。我想检查单独出现的单词而不与其他单词一起出现。例如,如果pandasdf列中有'abc',请将其替换为'',但如果它出现在abc123中,我们需要保持原样。这里的输出应该是,dat

python - Pandas 可以按行执行 min() 和 max() 函数吗?

在我的DataFrame中,我希望将特定列的值剪裁在0到100之间。例如,给定以下内容:ab01090120150230-30我想得到:abc0109090120150100230-300我知道在Pandas中,某些算术运算是跨列进行的。例如,我可以像这样将b列中的每个数字加倍:>>>df["c"]=df["b"]*2>>>dfabc01090180120150300230-30-60然而,这不适用于内置函数,如min和max:>>>df["c"]=min(100,max(0,df["b"]))ValueError:ThetruthvalueofaSeriesisambiguous.U