让我们说我有一个像下面这样的Pandas DataFrame。
df = pd.DataFrame({'Name' : ['A','B','C'],
'Country' : ['US','UK','SL']})
Country Name
0 US A
1 UK B
2 SL C
我有一个像csv一样的人。
Name,Extended
A,Jorge
B,Alex
E,Mark
F,Bindu
我需要检查df['Name']
是否在csv中,如果是,请获取"扩展"。 如果不是,我需要获得"姓名" 。所以我的预期输出就像是跟随。
Country Name Extended
0 US A Jorge
1 UK B Alex
2 SL C C
以下显示了我到目前为止的尝试。
f = open('mycsv.csv','r')
lines = f.readlines()
def parse(x):
for line in lines:
if x in line.split(',')[0]:
return line.strip().split(',')[1]
df['Extended'] = df['Name'].apply(parse)
Name Country Extended
0 A US Jorge
1 B UK Alex
2 C SL None
我无法弄清楚如何获得"姓名" for C at" Extended"(代码中else
部分)?任何帮助。
答案 0 :(得分:1)
您可以使用" fillna"大熊猫的功能如下:
LDFLAGS
答案 1 :(得分:0)
您可以将csv作为df加载,然后使用where
分配:
df['Name'] = df2['Extended'].where(df2['Name'] != df2['Extended'], df2['Name'])
所以我们在这里使用布尔条件来测试' Name'不等于'扩展'并使用该值,否则只需使用' Name'。
也是“扩展'总是与“姓名”不同或相同?如果是这样,为什么不直接将扩展值赋给数据帧:
df['Name'] = df2['Extended']
这会更简单。