繁体   English   中英

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

[英]Replace value of certain row in csv based on string value of adjacent row

如果列“ 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])

定义一个UDF并简单地在A列中应用该函数。

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


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

这应该有所帮助。

这将起作用:

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

IIUC:

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

然后保存:

df.to_csv('test.csv')

要么:

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

看你喜欢什么

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM