我正在尝试从 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.concat
和np.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