Как на основе одного DataFrame сделать выборку из второго DataFrame , чтобы построить третий?

У меня есть DataFrame, который содержит ссылки на строки в другом DataFrame в формате списка.

Мне нужно собрать новый датафрейм из указанных строк и добавить еще к ним новый столбец суммирующий значения первого DataFrame.

Чтобы было понятнее, сделал схему. Мне нужно собрать DataFrame как на схеме самый нижний.

введите сюда описание изображения

# DataFrame c данными data = {     'apples': [3, 2, 1, 4, 5, 0, 4, 2, 1],      'oranges': [3, 0, 4, 2, 1, 2, 3, 7, 2],     'tomat': [1, 1, 4, 2, 8, 6, 4, 7, 2] } df = pd.DataFrame(data)  # DataFrame c указанием номеров строк в первом maps = {     'cat': [3, 0, 4],     'sklad': [1, 5, 2],     'vec': [[3, 2, 1], [4, 0], [1, 5, 3, 2]]  } dfv = pd.DataFrame(maps)

Я начал делать все через циклы и условия и понимаю, что это сильно избыточно и неустойчиво. Подскажите, как правильно в Pandas выбирать вектора на основе списков и добавлять еще вычисляемые значения? Я запутался. У меня никак не получается

Criar um dataframe a partir de uma vários arquivos ‘.csv’

Tenho vários arquivos ‘.csv’ com o mesmo formato numa pasta, cada um com dados de uma data diferente.

ex.: 20181225 MFBG.csv – dados do dia 25 de dezembro de 2018

20181225 MFBG.csv - dados do dia 25 de dezembro de 2018

Quero montar um único banco de dados utilizando apenas dados da primeira coluna numérica (coluna B) de cada arquivo ‘.csv’. Pretendo transpor os dados para que cada cidade se torne uma coluna e os índices das linhas seriam as datas presentes no nome de cada arquivo.

Saída

inserir a descrição da imagem aqui

Excessive memory usage when using dask dataframe created from parquet file

I have parquet file that is 800K rows x 8.7K columns. I loaded it into a dask dataframe:

import dask.dataframe as dd dask_train_df = dd.read_parquet('train.parquet') dask_train_df.info() 

This yields:

<class 'dask.dataframe.core.DataFrame'> Columns: 8712 entries, 0 to 8711 dtypes: int8(8712) 

When I try to do simple operations like dask_train_df.head() or dask_train_df.loc[2:4].compute() I get memory errors, even with 17+ GB of RAM.

However, if I do:

import pandas as pd train = pd.read_parquet('../input/train.parquet') train.info() 

yields:

<class 'pandas.core.frame.DataFrame'> RangeIndex: 800000 entries, 0 to 799999 Columns: 8712 entries, 0 to 8711 dtypes: int8(8712) memory usage: 6.5 GB 

and I can run train.head() and train.loc[2:4] with no problems since everything is in memory already.

1) So my question is why do these simple operations blow up the memory usage using a Dask Dataframe, but works fine with when I load everything into memory using a Pandas Dataframe?

I notice that npartitions=1, and I see that in the documentation that read_parquet “reads a directory of Parquet data into a Dask.dataframe, one file per partition”. In my case, it sounds like I’m losing out on all of the parallelization power of having multiple partitions, but then shouldn’t the Dask Dataframe memory usage be capped by the amount of memory of the single Pandas Dataframe?

2) Also, a side question: If I wanted to parallelize this single parquet file by partitioning it in a Dask Dataframe, how would I do so? I don’t see a blocksize parameter in the dd.read_parquet signature. I also tried using the repartition function, but I believe that partitions along the rows and in a parquet file, I would want to partition along the columns?

How to user lower() method when filtering pandas DataFrame?

             0         1         2         3         4         5 word                                                             </s>  0.001129 -0.000896  0.000319  0.001534  0.001106 -0.001404 in    0.070312  0.086914  0.087891  0.062500  0.069336 -0.108887 for  -0.011780 -0.047363  0.044678  0.063477 -0.018188 -0.063965 that -0.015747 -0.028320  0.083496  0.050293 -0.110352  0.031738 is    0.007050 -0.073242  0.171875  0.022583 -0.132812  0.198242 

I have this DataFrame and I want to get rows where index (“word”) contains a specific string (case invariant). I’ve tried

df[df.index.str.lower().contains("Lebron") == True] 

it gives KeyError: False. Though

df[df.index.str.contains("Lebron") == True] 

works fine.

How to use lower() in this case?

Performing an operation in subsequent rows in a Pandas dataframe

I am trying to compute the difference in timestamps and make a delta time column in a Pandas dataframe. This is the code I am currently using:

# Initialize a list to store the delta values time_delta = [pd._libs.tslib.Timedelta('NaT')]  # Loop though the table and compute deltas for i in range(1,len(x)):     time_delta.append(x.loc[i,'timestamp'] - x.loc[i-1,'timestamp'])  # Compute a Pandas Series from the list  time_delta = pd.Series(time_delta)  # Attach the Series back to the original df x['time_delta'] = time_delta 

It seems like there should be a more efficient / vectorized way of doing this simple operation, but I can’t seem to figure it out.

Suggestions on improving this code would be greatly appreciated.

Python Pandas NLTK: Adding Frequency Counts or Importance Scoring to Part of Speech Chunks on Dataframe Text Column

I did NLTK part of speech tagging followed by chunking on one column (“train_text”) inside my Pandas data frame.

Below is my code that ran successfully and sample output results.

def process_content():     try:         for i in train_text:             words = nltk.word_tokenize(i)             tagged = nltk.pos_tag(words)             # chunkGram = r"""Chunk: {<RB.?>*<VB.?>*<NNP>+<NN>?}"""             chunkGram = r"""Chunk: {<VB.?><NN.?>}"""             chunkParser = nltk.RegexpParser(chunkGram)             chunked = chunkParser.parse(tagged)              for subtree in chunked.subtrees(filter = lambda t: t.label() == 'Chunk'):                 print (subtree)      except Exception as e:         print(str(e))  process_content() 

Results: “xxx” stands for a word; in the first instance it is a verb and in the second instance it is a noun

(Chunk xxx/VBN xxx/NN)  (Chunk xxx/VBN xxx/NN)  (Chunk xxx/VBN xxx/NN)  (Chunk xxx/VBN xxx/NN)  (Chunk xxx/VBN xxx/NN)  

Now that I have the chunks of words, I want to find the 10 most frequently occurring or prominent Verb + Noun chunks. Is there any way I can attach a frequency or importance score to each chunk?

Python Pandas NLTK: Adding Frequency Counts or Importance Scoring to Part of Speech Chunks on Dataframe Text Column

I did NLTK part of speech tagging followed by chunking on one column (“train_text”) inside my Pandas data frame.

Below is my code that ran successfully and sample output results.

def process_content():     try:         for i in train_text:             words = nltk.word_tokenize(i)             tagged = nltk.pos_tag(words)             # chunkGram = r"""Chunk: {<RB.?>*<VB.?>*<NNP>+<NN>?}"""             chunkGram = r"""Chunk: {<VB.?><NN.?>}"""             chunkParser = nltk.RegexpParser(chunkGram)             chunked = chunkParser.parse(tagged)              for subtree in chunked.subtrees(filter = lambda t: t.label() == 'Chunk'):                 print (subtree)      except Exception as e:         print(str(e))  process_content() 

Results: “xxx” stands for a word; in the first instance it is a verb and in the second instance it is a noun

(Chunk xxx/VBN xxx/NN)  (Chunk xxx/VBN xxx/NN)  (Chunk xxx/VBN xxx/NN)  (Chunk xxx/VBN xxx/NN)  (Chunk xxx/VBN xxx/NN)  

Now that I have the chunks of words, I want to find the 10 most frequently occurring or prominent Verb + Noun chunks. Is there any way I can attach a frequency or importance score to each chunk?

How to save pandas dataframe into existing pdf from PdfPages

I have created a pdf that saves several plots created using Matplotlib.

I did the following to create the pdf

from matplotlib.backends.backend_pdf import PdfPages report = PdfPages('report.pdf') 

After creating a plot, I would do this report.savefig() each time. However, I also want to output dataframes I generated into the Pdf. Essentially I want a report contain plots and queried dataframes all in one place. Is it possible to add a dataframe to the Pdf using the one created with PdfPages and if so, how would I do so? If not, is there another approach that would allow the plots and dataframe to be in once place (without having to save individual components and piecing them together)? Would love any suggestions and examples. Thanks!