Как я могу создать новый столбец в сводной таблице Pandas только с соответствующими значениями заполненных столбцов? - PullRequest
0 голосов
/ 26 марта 2019

У меня есть сводная таблица pandas, в которой перечислены отдельные лица в строках и источники данных по столбцам.Есть сотни людей, спускающихся среди рядов, и сотни источников, идущих вдоль колонн.

      Desired_Value  Source_1  Source_2  Source_3 ... Source_50
person1     20          20         20                    20
person2      5           5                    5           5
person3   Review         3          4         4           4
...
person50     1           1                                1

Что я хочу сделать, это создать столбец Desired_Value выше.Я хочу получить значение, если оно совпадает со всеми значениями (игнорируя пустые поля).Если значения не совпадают, я хочу показать обзор.

Я использую эту команду pandas, чтобы напечатать свой df, чтобы преуспеть в настоящее время (без какого-либо столбца Desired_Value):

df13 = df12.pivot_table(index='person', columns = 'source_name', values = 'actual_data', aggfunc='first')

Я новичок в Python, поэтому извиняюсь, если это глупый вопрос.

1 Ответ

0 голосов
/ 26 марта 2019

Это один из способов сделать это:

df = df13.copy()
df = df.astype('Int64') # So NaN and Int values can coexist

# Create new column at the front of the data frame
df['Desired_Value'] = np.nan
cols = df.columns.tolist()
cols = cols[-1:] + cols[:-1]
df = df[cols]

# Loop over all rows and flag columns for review
for idx, row in df.iterrows():
    val = row.dropna().unique()
    if len(val) == 1:
        df.loc[idx, 'Desired_Value'] = val
    else:
        df.loc[idx, 'Desired_Value'] = 'Review'

print(df)
         Desired_Value  Source_1  Source_2  Source_3  Source_50
person1             20        20        20       NaN         20
person2              5         5       NaN         5          5
person3         Review         3         4         4          4
person50             1         1       NaN       NaN          1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...