我有一个特定大小的 Pandas 数据框说:
ID FACTOR LEVEL
160 SPM P
159 SPM2 S
851 ABS K
415 ABS P
202 ABS P
205 ABS2 Q
207 AQE T
我想要做的是我有一个包含两个项目的列表: X = ['GAB', 'YER']
所以我想做的是,我想将列表中的这些项目作为一个新列(例如 NewCol)分发,其特定频率与数据框中行的大小相同。所以在这种情况下,假设我有 7 行和 2 个项目,7/2 整数商为 3,所以我想将第一个项目放在 3 行中,下一个项目放在其余 4 行中。所以输出应该是这样的:
ID FACTOR LEVEL NewCol
160 SPM P GAB
159 SPM2 S GAB
851 ABS K GAB
415 ABS P YER
202 ABS P YER
205 ABS2 Q YER
207 AQE T YER
到目前为止,我能做的是使用
创建一系列包含两个元素的元素 df_s = pd.DataFrame(X)
这是给了我
0
GAB
YER
但是,我无法使用 X 中的值从数据框的形状创建一个系列,也无法找到分发它的方法。我仍在努力,但我将不胜感激来自专家的一些帮助/提示。
最佳答案
使用 np.repeat
并将结果分配给新列:
arr = np.repeat(X, len(df) // len(X))
df['NewCol'] = pd.Series(arr, index=df.index[:len(arr)])
df
ID FACTOR LEVEL NewCol
0 160 SPM P GAB
1 159 SPM2 S GAB
2 851 ABS K GAB
3 415 ABS P YER
4 202 ABS P YER
5 205 ABS2 Q YER
6 207 AQE T NaN
如果你想填充最后一个NaN,使用,
df['NewCol'] = df['NewCol'].ffill()
关于python - 从项目列表创建特定形状的 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56247580/