将列的每个唯一值分配给整个数据帧,就像数据框根据另一列的值复制自身一样



我正在尝试从 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

任何想法如何更正此代码。 非常感谢。

您可以使用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

最新更新