Pandas从列中提取数据

时间:2015-07-17 01:43:28

标签: python pandas

我有一个像这样的数据框

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)

1 个答案:

答案 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