【发布时间】:2021-10-13 23:47:34
【问题描述】:
我想在另一个数据帧df_x 的相应行中的值之后水平移动我的数据帧test_1 的每一行。 df_x 每行中的值应该定义向左移动的步数。
test_1 = pd.DataFrame([[1,2,3,4], [10,12,13,14], [20, 22, 23,24]])
df_x = pd.DataFrame([[1],[3],[2]])
我的预期输出是:
Out[157]:
0 1 2 3
0 2 3 4 NA
1 14 NA NA NA
2 23 24 NA NA
我尝试从一个类似问题 (how to shift columns in pandas DataFrame dynamically and independently?) 的答案中进行调整,并使用了这个:
test_1.apply(lambda x: x.shift(periods = -df_x.loc[x,:]), axis = 1).
但是,我不断收到以下错误:
KeyError: "Passing list-likes to .loc or [] with any missing labels is no longer supported. The following labels were missing: Int64Index([3, 4], dtype='int64'). See https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#deprecate-loc-reindex-listlike"
PS:如果有人也知道如何在不从 Xarray 转换为 Pandas 的情况下做到这一点,那就更好了。
【问题讨论】:
标签: python pandas dataframe python-xarray