我有一个像这样的数据框
import pandas as pd
d={'x':[8,5,6,7],
'cord':['(3,0)','(2,0)','(6,0)','(1,0)']}
df=pd.DataFrame.from_dict(d)
我想创建df ['y'],它将具有第一个'cord'值并转换为获取索引值。
cord x y
0 (3,0) 8 1 #Index 3, First value in (1,0)
1 (2,0) 5 6 #Index 2, First value in (6,0)
2 (6,0) 6 NaN #Index 6, does not exist, NaN
3 (1,0) 7 2 #Index 1, First value (1,0)
答案 0 :(得分:1)
制作一个单独的列,这是电话线的第一个元素
df['cord1'] = df.cord.map( lambda x: x.split(',')[0].split('(')[-1]).map(int)
df
# cord x cord1
#0 (3,0) 8 3
#1 (2,0) 5 2
#2 (6,0) 6 6
#3 (1,0) 7 1
这可能看起来令人困惑,但它只是将字符串'(a,b)'拆分两次,首先在','
上,然后在'('
上。最后,它将剩余的字符串'a'
转换为整数。
现在使用cord1列制作y列
df['y'] = df.cord1[ df.cord1.values].values
小心传递值。现在放下cord1列
df.drop( labels='cord1', axis=1, inplace=True)
#df
# cord x y
#0 (3,0) 8 1
#1 (2,0) 5 6
#2 (6,0) 6 NaN
#3 (1,0) 7 2