Python 根据其他两列的值填充一列
我试图填充一列:如果a行的值包含在B列的行中,那么用a值填充C列 我试过:Python 根据其他两列的值填充一列,python,pandas,Python,Pandas,我试图填充一列:如果a行的值包含在B列的行中,那么用a值填充C列 我试过: import pandas df = pandas.DataFrame([{'A': "a", 'B': ["a"], 'C': ''}, {'A': "b", 'B': ["a", "b"], 'C': ''}, {'A': "d", 'B': [], 'C': ''}, {'A'
import pandas
df = pandas.DataFrame([{'A': "a", 'B': ["a"], 'C': ''},
{'A': "b", 'B': ["a", "b"], 'C': ''},
{'A': "d", 'B': [], 'C': ''},
{'A': "c", 'B': ["d", "e"], 'C': ''}])
def fill_row(df):
if df["B"].str.contains(df["A"], regex = False):
val = df["A"]
else:
val = ""
return val
df['C'] = df.apply(fill_row, axis=1)
df = pandas.DataFrame([{'A': "a", 'B': ["a"], 'C': 'a'},
{'A': "b", 'B': ["a", "b"], 'C': 'b'},
{'A': "d", 'B': [], 'C': ''},
{'A': "c", 'B': ["d", "e"], 'C': ''}])
我的输出:
import pandas
df = pandas.DataFrame([{'A': "a", 'B': ["a"], 'C': ''},
{'A': "b", 'B': ["a", "b"], 'C': ''},
{'A': "d", 'B': [], 'C': ''},
{'A': "c", 'B': ["d", "e"], 'C': ''}])
def fill_row(df):
if df["B"].str.contains(df["A"], regex = False):
val = df["A"]
else:
val = ""
return val
df['C'] = df.apply(fill_row, axis=1)
df = pandas.DataFrame([{'A': "a", 'B': ["a"], 'C': 'a'},
{'A': "b", 'B': ["a", "b"], 'C': 'b'},
{'A': "d", 'B': [], 'C': ''},
{'A': "c", 'B': ["d", "e"], 'C': ''}])
AttributeError:“list”对象没有属性“str”
输出良好:
import pandas
df = pandas.DataFrame([{'A': "a", 'B': ["a"], 'C': ''},
{'A': "b", 'B': ["a", "b"], 'C': ''},
{'A': "d", 'B': [], 'C': ''},
{'A': "c", 'B': ["d", "e"], 'C': ''}])
def fill_row(df):
if df["B"].str.contains(df["A"], regex = False):
val = df["A"]
else:
val = ""
return val
df['C'] = df.apply(fill_row, axis=1)
df = pandas.DataFrame([{'A': "a", 'B': ["a"], 'C': 'a'},
{'A': "b", 'B': ["a", "b"], 'C': 'b'},
{'A': "d", 'B': [], 'C': ''},
{'A': "c", 'B': ["d", "e"], 'C': ''}])
对于列表中的测试值,使用状态网中的
:
def fill_row(df):
if df["A"] in df['B']:
val = df["A"]
else:
val = ""
return val
df['C'] = df.apply(fill_row, axis=1)
print (df)
A B C
0 a [a] a
1 b [a, b] b
2 d []
3 c [d, e]
对于列表中的测试值,使用状态网中的:
def fill_row(df):
if df["A"] in df['B']:
val = df["A"]
else:
val = ""
return val
df['C'] = df.apply(fill_row, axis=1)
print (df)
A B C
0 a [a] a
1 b [a, b] b
2 d []
3 c [d, e]
一种方法是列表理解:
df['C'] = [a if a in b else c for a,b,c in zip(df.A,df.B, df.C)]
A B C
0 a [a] a
1 b [a, b] b
2 d []
3 c [d, e]
一种方法是列表理解:
df['C'] = [a if a in b else c for a,b,c in zip(df.A,df.B, df.C)]
A B C
0 a [a] a
1 b [a, b] b
2 d []
3 c [d, e]
在fill_row(df)
中,如果df[“B”].str.contains(df[“a”],regex=False),则尝试在处将列表转换为字符串。
。相反,如果df[“B”]
中的df[“A”]
在填充行(df)
中尝试将列表转换为中的字符串,如果df[“B”].str.contains(df[“A”],regex=False)
。相反,如果df[“B”]中的df[“A”],只需尝试