Объединить текущее значение с предыдущим значением на основе других условий столбца

Вы пытаетесь получить доступ к объекту (client.getOutputStream()), итерации по списку, таким образом, java.util.ConcurrentModificationException. Измените List<> на ConcurrentLinkedQueue. Также для PrintWriter здесь вы просто завершаете существующий поток.

-1
задан sccoding 19 January 2019 в 11:06
поделиться

1 ответ

Вот быстрый способ настроить DataFrame:

import pandas as pd
import numpy as np

data = [
    [False, "bird", ""],
    [True, "fish", ""],
    [True, "Tiger", ""],
    [False, "Elephant", ""],
]

df = pd.DataFrame(data=data, columns=["A", "B", "C"])

Это создает переменную df, содержащую DataFrame в Pandas.

Теперь используйте этот код для итерации по DataFrame и установите каждое значение:

last = []
for index, row in df.iterrows():
    if index == 0:
        df.at[index, 'C'] = row['B'] # because first one has no previous to concatenate to
    else:
        if (row['A']): # check A
            df.at[index, 'C'] = last['C']+','+row['B'] # if A is true, then concatenate previous B and this one
        else:
            df.at[index, 'C'] = row['B'] # else, use this B
    last = row # now set this row to the last one that was accessed, for the next iteration of this loop

Если вы print(pd) в этот момент, вы получите ожидаемый результат.

Вот полный код, который я использовал:

import pandas as pd
import numpy as np

data = [
    [False, "bird", ""],
    [True, "fish", ""],
    [True, "Tiger", ""],
    [False, "Elephant", ""],
]

df = pd.DataFrame(data=data, columns=["A", "B", "C"])

print(df)

last = []
for index, row in df.iterrows():
    if index == 0:
        df.at[index, 'C'] = row['B'] # because first one has no previous to concatenate to
    else:
        if (row['A']): # check A
            df.at[index, 'C'] = last['B']+','+row['B']
        else:
            df.at[index, 'C'] = row['B']
    last = row

print(df)
0
ответ дан sccoding 19 January 2019 в 11:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: