大熊猫添加多列与

时间:2019-05-10 16:14:30

标签: pandas

我目前正在将熊猫的数据框中的经度,纬度坐标投影到笛卡尔平面上。因此,我有一种投影方法:<​​/ p>

def convert_lat_long_xy(lat, lo):
    return x, y

因此,这将返回一个元组,并且我可以在数据框上使用以下方法:

df.apply(lambda x: convert_lat_long_xy(x.latitude, x.longitude), axis=1))

现在,我想做的是在数据框中创建两个额外的列,分别称为“ x”和“ y”,以容纳这些值。我知道我可以做类似的事情:

df['proj'] = df.apply(lambda x: convert_lat_long_xy(x.latitude, x.longitude), axis=1))

但是是否可以将值添加到两个不同的列中?

1 个答案:

答案 0 :(得分:1)

是的,您需要将lambda的输出转换为pd.Series。这是一个示例:

In [1]: import pandas as pd 

In [2]: pd.DataFrame(["1,2", "2,3"], columns=["coord"])
Out[2]: 
  coord
0   1,2
1   2,3

In [3]: df = pd.DataFrame(["1,2", "2,3"], columns=["coord"])

In [4]: df.apply(lambda x: pd.Series(x["coord"].split(",")), axis=1)
Out[4]: 
   0  1
0  1  2
1  2  3

In [5]: df[["x", "y"]] = df.apply(lambda x: pd.Series(x["coord"].split(",")), axis=1)

In [6]: df
Out[6]: 
  coord  x  y
0   1,2  1  2
1   2,3  2  3

对于您的特定情况,df.apply会变成这样:

df[['x', 'y']] = df.apply(lambda x: pd.Series(convert_lat_long_xy(x.latitude, x.longitude)), axis=1))