根据相邻行的字符串值替换csv中某行的值

时间:2018-10-08 05:26:23

标签: python pandas dataframe

如果列“ A”的行有一个(字符串)假定我已有一个csv,如何替换列“ B”中的行的值。就像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 :(得分:0)

定义一个UDF,只需在A列中应用该函数。

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


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

这应该有所帮助。

答案 1 :(得分:0)

这将起作用:

import pandas as pd
df = pd.DataFrame([["Dog","Black"], ["Cat","White"]], columns=['A', 'B'])    
df.loc[df['A'] == "Dog", 'B'] = ["White"]

答案 2 :(得分:0)

IIUC:

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

然后保存:

df.to_csv('test.csv')

OR:

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

看看你喜欢什么