Python 如何将熊猫中的两列连接到另一个单独的列中?
任何帮助都将不胜感激。这可能很容易,但我对Python还是新手。Python 如何将熊猫中的两列连接到另一个单独的列中?,python,pandas,Python,Pandas,任何帮助都将不胜感激。这可能很容易,但我对Python还是新手。 我想添加两列,即纬度和经度,并将其放入名为Location的列中 例如: 纬度的第一行的值为41.864073,经度的第一行的值为-87.706819 我希望'Locations'列显示41.864073,-87.706819 请接受并感谢您。我对本专栏的有用性表示怀疑,但您可以通过在专栏上应用可调用的元组来生成它 >>> df = pd.DataFrame([[1, 2], [3,4]], columns=['
我想添加两列,即纬度和经度,并将其放入名为Location的列中 例如: 纬度的第一行的值为
41.864073
,经度的第一行的值为-87.706819
我希望'Locations'
列显示41.864073,-87.706819
请接受并感谢您。我对本专栏的有用性表示怀疑,但您可以通过在专栏上应用可调用的
元组来生成它
>>> df = pd.DataFrame([[1, 2], [3,4]], columns=['lon', 'lat'])
>>> df
>>>
lon lat
0 1 2
1 3 4
>>>
>>> df['Location'] = df.apply(tuple, axis=1)
>>> df
>>>
lon lat Location
0 1 2 (1, 2)
1 3 4 (3, 4)
如果数据框中除了'lon'
和'lat'
之外还有其他列,请使用
df['Location'] = df[['lon', 'lat']].apply(tuple, axis=1)
我质疑此列的有用性,但您可以通过在列上应用可调用的元组来生成它
>>> df = pd.DataFrame([[1, 2], [3,4]], columns=['lon', 'lat'])
>>> df
>>>
lon lat
0 1 2
1 3 4
>>>
>>> df['Location'] = df.apply(tuple, axis=1)
>>> df
>>>
lon lat Location
0 1 2 (1, 2)
1 3 4 (3, 4)
如果数据框中除了'lon'
和'lat'
之外还有其他列,请使用
df['Location'] = df[['lon', 'lat']].apply(tuple, axis=1)
安装程序
zip
这应该比使用apply
df.assign(location=[*zip(df.lat, df.lon)])
lat lon location
0 10 100 (10, 100)
1 11 101 (11, 101)
2 12 102 (12, 102)
3 13 103 (13, 103)
4 14 104 (14, 104)
5 15 105 (15, 105)
6 16 106 (16, 106)
7 17 107 (17, 107)
8 18 108 (18, 108)
9 19 109 (19, 109)
列表
变体
虽然我还是建议使用tuple
df.assign(location=df[['lat', 'lon']].values.tolist())
lat lon location
0 10 100 [10, 100]
1 11 101 [11, 101]
2 12 102 [12, 102]
3 13 103 [13, 103]
4 14 104 [14, 104]
5 15 105 [15, 105]
6 16 106 [16, 106]
7 17 107 [17, 107]
8 18 108 [18, 108]
9 19 109 [19, 109]
安装程序
zip
这应该比使用apply
df.assign(location=[*zip(df.lat, df.lon)])
lat lon location
0 10 100 (10, 100)
1 11 101 (11, 101)
2 12 102 (12, 102)
3 13 103 (13, 103)
4 14 104 (14, 104)
5 15 105 (15, 105)
6 16 106 (16, 106)
7 17 107 (17, 107)
8 18 108 (18, 108)
9 19 109 (19, 109)
列表
变体
虽然我还是建议使用tuple
df.assign(location=df[['lat', 'lon']].values.tolist())
lat lon location
0 10 100 [10, 100]
1 11 101 [11, 101]
2 12 102 [12, 102]
3 13 103 [13, 103]
4 14 104 [14, 104]
5 15 105 [15, 105]
6 16 106 [16, 106]
7 17 107 [17, 107]
8 18 108 [18, 108]
9 19 109 [19, 109]
来自Pir的数据
df['New']=tuple(zip(*df[['lat','lon']].values.T))
df
Out[106]:
lat lon New
0 10 100 (10, 100)
1 11 101 (11, 101)
2 12 102 (12, 102)
3 13 103 (13, 103)
4 14 104 (14, 104)
5 15 105 (15, 105)
6 16 106 (16, 106)
7 17 107 (17, 107)
8 18 108 (18, 108)
9 19 109 (19, 109)
来自Pir的数据
df['New']=tuple(zip(*df[['lat','lon']].values.T))
df
Out[106]:
lat lon New
0 10 100 (10, 100)
1 11 101 (11, 101)
2 12 102 (12, 102)
3 13 103 (13, 103)
4 14 104 (14, 104)
5 15 105 (15, 105)
6 16 106 (16, 106)
7 17 107 (17, 107)
8 18 108 (18, 108)
9 19 109 (19, 109)
我确实从W-B和timgeb那里学到了一些东西。我的想法是转换成字符串并连接。我发布了我的答案,以防你想要结果作为字符串。否则,上面的答案似乎就是正确的选择
import pandas as pd
from pandas import *
Dic = {'Lattitude': [41.864073], 'Longitude': [-87.706819]}
DF = pd.DataFrame.from_dict(Dic)
DF['Location'] = DF['Lattitude'].astype(str) + ',' + DF['Longitude'].astype(str)
我确实从W-B和timgeb那里学到了一些东西。我的想法是转换成字符串并连接。我发布了我的答案,以防你想要结果作为字符串。否则,上面的答案似乎就是正确的选择
import pandas as pd
from pandas import *
Dic = {'Lattitude': [41.864073], 'Longitude': [-87.706819]}
DF = pd.DataFrame.from_dict(Dic)
DF['Location'] = DF['Lattitude'].astype(str) + ',' + DF['Longitude'].astype(str)
对不起,我应该提到我还有其他专栏。当我尝试您建议的内容时,它还将其他列添加到位置中。不管怎样,要特别加入lon&lat?对不起,我应该提到我还有其他专栏。当我尝试您建议的内容时,它还将其他列添加到位置中。是否要特别加入lon&lat?感谢分享。OP并没有说明他们需要创建新的数据帧。我不推荐你提出的方法。您创建了两个字典,然后创建了两个数据帧来将它们连接在一起。这是不必要的。然而,其他答案都没有提到实际上是作为字符串连接的。这是一个有效的解释,但您正在进行大量类型转换,但几乎没有什么好处。我建议你还是用元组吧。我明白你的意思了。创建两个字典和两个数据帧是为了达到我认为OP的起点。我更新了我的帖子,创建了一个字典和一个数据框。我同意你的解决方案要优雅得多…只是尝试一下我学到的兵工厂到目前为止lol。感谢分享。OP并没有说明他们需要创建一个新的数据框架。我不推荐你提出的方法。您创建了两个字典,然后创建了两个数据帧来将它们连接在一起。这是不必要的。然而,其他答案都没有提到实际上是作为字符串连接的。这是一个有效的解释,但您正在进行大量类型转换,但几乎没有什么好处。我建议你还是用元组吧。我明白你的意思了。创建两个字典和两个数据帧是为了达到我认为OP的起点。我更新了我的帖子,创建了一个字典和一个数据框。我同意你的解决方案要优雅得多…只是尝试一下我学到的阿森纳,哈哈。嘿,比尔。看起来你得到了很多答案。如果问题得到解决,如果您选择其中一个答案作为接受答案,我们将不胜感激。谢谢嘿,比尔。看起来你得到了很多答案。如果问题得到解决,如果您选择其中一个答案作为接受答案,我们将不胜感激。谢谢“这应该比使用apply
更好”apply
非常好,特别是因为它非常直观。因此,如果性能不是问题,那么这是一个很好的解决方案。但是,众所周知,apply
可能存在性能问题。我尽量避免对每个问题和答案使用性能大棒,但我确实尽量避免在我的答案中使用apply
。但我承认,在某些情况下,这会使答案更加优雅。就我个人而言,我喜欢拉链。它是语言的核心组成部分,值得理解,因此它也变得“可读”。“这应该比使用apply
”更好。apply
非常好,特别是因为它非常直观。因此,如果性能不是问题,那么这是一个很好的解决方案。但是,众所周知,apply
可能存在性能问题。我尽量避免对每个问题和答案使用性能大棒,但我确实尽量避免在我的答案中使用apply
。但我承认,在某些情况下,这会使答案更加优雅。就我个人而言,我喜欢拉链。它是语言的核心组成部分,值得理解,使之也变得“可读”。