组合多个系列并在 Pandas df 中创建一个新系列
Posted
技术标签:
【中文标题】组合多个系列并在 Pandas df 中创建一个新系列【英文标题】:Combining multiple series and creating a new one in a Pandas df 【发布时间】:2018-12-20 02:16:42 【问题描述】:我有 5 个 pandas.series 我想合并成一个新的。这怎么可能?例如。我有 s1: en s2: gl s3: a s4: nd 我想做一个新的 s5: england
我尝试过 pd.concat、combine、append 但似乎没有任何效果。
谢谢!
【问题讨论】:
【参考方案1】:如果你有诸如
之类的系列s1 = pd.Series(['en' , 'b'])
s2 = pd.Series(['gla', 'ra'])
s3 = pd.Series(['nd' , 'zil'])
你可以sum
他们
>>> s1+s2+s3
0 england
1 brazil
dtype: object
如果你有诸如
之类的系列s1 = pd.Series(['e', 'n'])
s2 = pd.Series(['g', 'l', 'a'])
s3 = pd.Series(['n','d'])
你可以join
他们
>>> ''.join(s1.tolist()+s2.tolist()+s3.tolist())
'england'
或sum
先
>>> s1.sum() + s2.sum() + s3.sum()
'england'
【讨论】:
非常感谢@RafaelC!但是如果我有这样的整数呢: s1 = pd.series([2018, 2017, 2016]) s2 = pd.series([0, 1, 2]) s3 = pd.series ([10.23, 22.33, 99.22]) ??再次感谢! 这种情况下的预期输出是什么? 系列中有拆分字符串(就像上面的 en,gl,a,nd 示例一样,谢谢!)但也有带有年、小时、分秒的日期(如 s1 = pd.series ([2018, 2017, 2016]) s2 = pd.series([0, 1, 2]) s3 = pd.series ([10.23, 22.33, 99.22])。所以预期的输出应该是一个新的系列,比如说df['timestamp'] 将是 2018 0 10.23 , 2017 1 22.33 , 2016 2 99.22 等。以上是关于组合多个系列并在 Pandas df 中创建一个新系列的主要内容,如果未能解决你的问题,请参考以下文章
如何根据多个条件将 1 个 pandas 数据帧合并或组合到另一个数据帧
Pandas - 匹配来自两个数据帧的两列并在 df1 中创建新列
如何在 pandas DataFrame 中的字符串模式后提取数字并在 python 中创建新功能