Заменить значение определенной строки в CSV на основе значения строки соседней строки - PullRequest
0 голосов
/ 08 октября 2018

Как заменить значение строк в столбце «B», если в строках столбца «A» есть (строка), предполагается, что у меня есть существующий CSV.Например, если Dog в строке, измените соседнюю строку в столбце B

Я ищу что-то вроде этого:

for i in df['A']:
if i =='Dog','Cat': 
//replace value Black in column B to White

Пример:

Оригинальный CSV

A,B
Dog,Black
Cat,Black
Mouse,Black
Pig,Black

Заменяет на:

A,B
Dog,White
Cat,White
Mouse,Black
Pig,Black

Вот мой код, ничего не отображается в моем CSV, я не знаю, почему

import pandas as pd
import csv

df = pd.read_csv("test.csv")
data = { 'A': [ 'Dog', 'Cat', 'Pig'] }
df = pd.DataFrame(data)
class Description(dict):
     def __missing__(self, key):
         return ''

desc = Description()
desc['Dog'] = 'White'
desc['Cat'] = 'White'
desc['Pig'] = 'White'
df['B'] = df['A'].apply(lambda x: desc[x])

Ответы [ 3 ]

0 голосов
/ 08 октября 2018

Это будет работать:

import pandas as pd
df = pd.DataFrame([["Dog","Black"], ["Cat","White"]], columns=['A', 'B'])    
df.loc[df['A'] == "Dog", 'B'] = ["White"]
0 голосов
/ 08 октября 2018

IIUC:

df.loc[df['A'].isin(["Dog","Cat"]), 'B'] = "White"

Затем сохраните:

df.to_csv('test.csv')

ИЛИ:

df.to_csv('test.csv',index=False)

посмотрите, что вы предпочитаете

0 голосов
/ 08 октября 2018

Определите UDF и просто примените функцию в столбце A.

def surnamemap(x):
        if x =="dog":
             return 'Black'
        elif x == "cat":
             return 'White'


 df['B'] = df['A'].apply(lambda x: surnamemap[x])

Это должно помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...