在熊猫中循环合并多个系列
Posted
技术标签:
【中文标题】在熊猫中循环合并多个系列【英文标题】:Merging multiple series in loop in pandas 【发布时间】:2019-03-07 07:37:32 【问题描述】:所以我有一个系列列表如下:
groupdf1
Out[304]:
[90-95 9
>100 1
80-90 1
50-80 1
Name: bucket, dtype: int64, 80-90 9
95-100 1
90-95 1
50-80 1
Name: bucket, dtype: int64, 80-90 10
90-95 1
50-80 1
Name: bucket, dtype: int64, 80-90 11
95-100 1
Name: bucket, dtype: int64, 50-80 9
我正在尝试创建一个如下所示的数据框:
bucket.1 bucket.2 bucket.3 bucket.4
90-95 9 1 1 NaN
>100 1 NaN NaN NaN
80-90 1 9 10 11
50-80 1 1 1 NaN
95-100 NaN NaN NaN 1
这基本上是合并索引上的每个系列。我无法循环运行它。我收到以下错误:
groupdf=pd.DataFrame(groupdf1[0])
for i in range(1,len(groupdf1)):
groupdf2=pd.DataFrame(groupdf1[i])
groupdf.concat(groupdf2)
Traceback (most recent call last):
File "<ipython-input-278-4c8876ecdb74>", line 4, in <module>
groupdf.concat(groupdf2)
File "C:\Users\hp1\Anaconda3\lib\site-packages\pandas\core\generic.py", line 3081, in __getattr__
return object.__getattribute__(self, name)
AttributeError: 'DataFrame' object has no attribute 'concat'
有人可以帮我吗?谢谢。
【问题讨论】:
【参考方案1】:如果groupdf1
是DataFrame
s 的列表,请使用pandas.concat
和axis=1
,然后通过enumerate
和f-string
s 设置新列名称:
df = pd.concat(groupdf1, axis=1)
df.columns = [f'x.i' for i, x in enumerate(df.columns, 1)]
#alternative
#df.columns = [f'bucket.i' for i in np.arange(1,len(df.columns) + 1)]
【讨论】:
【参考方案2】:它是 pandas.concat ... DataFrame 对象没有该属性。尝试 pandas.concat((df1, df2)) 或任何您的数据框的名称。正如 jezrael 指出的那样, pd.concat 采用任何间隔的数据帧,因此只需将 axis=1 参数传递给按列连接即可。
【讨论】:
以上是关于在熊猫中循环合并多个系列的主要内容,如果未能解决你的问题,请参考以下文章