![](/img/trans.png)
[英]Replace string value with previous row value based on conditionals - Pandas
[英]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.