заменить пустой список значениями в другом столбце в панде - PullRequest
2 голосов
/ 11 марта 2019

Я пытаюсь заменить список значений в одном столбце другим столбцом, ниже приведены данные и сценарий, которые я использую

old = [[51, 1], 
          [52, 1], 
          [53, -1], 
          [], 
          [54, 0], 
          [55, 0], 
          [52, 0], 
          [], 
          [52, 0], 
          [54, -1]]

import pandas as pd
df = pd.DataFrame(columns=['old','new'])     
df["old"]=old

new = [[51, 1], 
          [52, 1], 
          [53, -1], 
          [54, -2], 
          [54, 0], 
          [55, 0], 
          [52, 0], 
          [55. -3], 
          [52, 0], 
          [54, -1]]

df["new"]=new

for index, row in df.iterrows():
    if ((df["old"][index])==[]) :
        df.old[index] = df.new[index]

Есть ли лучший способ, чем использовать цикл for, на самом деле в моем скрипте слишком много циклов, поэтому я хочу избежать использования цикла for для небольшого количества манипуляций с данными Если кто-нибудь знает, это будет здорово помочь

1 Ответ

2 голосов
/ 11 марта 2019

Вы можете использовать Series.mask:

# df['old'] = df['old'].mask(df['old'].str.len() == 0, df['new'])
df['old'].mask(df['old'].str.len() == 0, df['new'])

0     [51, 1]
1     [52, 1]
2    [53, -1]
3    [54, -2]
4     [54, 0]
5     [55, 0]
6     [52, 0]
7      [52.0]
8     [52, 0]
9    [54, -1]
Name: old, dtype: object
...