首页 > 解决方案 > 将列的每个唯一值分配给整个数据框,就好像数据框根据另一列的值复制自己一样

问题描述

我正在尝试从 df2 迭代列的值,并将 df2 中的每个列值分配给 df1。好像 df1 将根据 df2 中的列值相乘。假设我有 df1,如下所示:

df1
1
2
3

和df2如下:

df2
A
B
C

我希望第三个数据框 df3 如下所示:

df3
1 A
2 A
3 A
1 B
2 B
3 B
1 C
2 C
3 C

现在我已经尝试了下面的代码

for i, value in ACS_shock['scenario'].iteritems():

    df1['sec'] = df1[i] = value[:]

但是当我从 DF1 生成文件时,我的输出如下所示:

1 A B C
2 A B C
3 A B C

知道如何更正此代码。非常感激。

标签: python

解决方案


您可以使用pd.concatnp.repeat

>>> import pandas as pd
>>> import numpy as np
>>> df1 = pd.Series([1,2,3])
>>> df1
0    1
1    2
2    3
dtype: int64
>>> df2 = pd.Series(list('ABC'))
>>> df2
0    A
1    B
2    C
dtype: object

>>> df3 = pd.DataFrame({'df1': pd.concat([df1]*3).reset_index(drop=True),
                        'df2': np.repeat(df2, 3).reset_index(drop=True)})

>>> df3
   df1 df2
0    1   A
1    2   A
2    3   A
3    1   B
4    2   B
5    3   B
6    1   C
7    2   C
8    3   C

推荐阅读