【发布时间】:2021-04-14 00:20:05
【问题描述】:
我有一个带有一些参考值的数据框:
ref_value = {A:111, B:222, C:333, D:444}
df = pd.DataFrame(ref_value)
|foo|bar|
|---|---|
|A |111|
|B |222|
|C |333|
|D |444|
然后我想用它来创建一个更大的数据集,如下所示:
| x | y |
|---|---|
|1 |111|
|2 |111|
|3 |111|
|4 |111|
|5 |111|
|6 |222|
|7 |222|
|8 |222|
|9 |222|
|10 |222|
|11 |333|
|12 |333|
|13 |333|
|14 |333|
|15 |333|
|16 |444|
|17 |444|
|18 |444|
|19 |444|
|20 |444|
这就是我的做法:
new_df = pd.DataFrame(np.arange(20))
new_df.loc[new_df.x <= 5, 'y'] = df.loc[df.foo == 'A', 'bar'].iloc[0]
new_df.loc[(new_df.x > 5) & (new_df.x <= 10), 'y'] = df.loc[df.foo == 'B', 'bar'].iloc[0]
new_df.loc[(new_df.x > 10) & (new_df.x <= 15), 'y'] = df.loc[df.foo == 'C', 'bar'].iloc[0]
new_df.loc[new_df.x > 15, 'y'] = df.loc[df.foo == 'D', 'bar'].iloc[0]
我可以就如何更轻松/优雅地做到这一点提出一些建议吗?
在这种情况下,我似乎无法让 df.apply(lambda x: function) 工作。
注意:我使用的实际 DataFrame 更大一些。
提前致谢。
【问题讨论】:
-
所以你只想重复这些值?
-
这能回答你的问题吗? How can I replicate rows in Pandas?
-
df.bar.repeat(5)?