python - Python:在数据框中移动一个单元格
问题描述
我遇到了需要列移位的格式问题,可以通过以下方式说明:
df =
A B C D E
0 foo spam egg 0 0
1 bar egg 1 0.84 NaN
2 bar egg 2 0.91 NaN
3 foo spam egg 3 0.14
4 foo spam egg 4 -0.76
对此:
df =
A B C D E
0 foo spam egg 0 0.00
1 bar spam egg 1 0.84
2 bar spam egg 2 0.91
3 foo spam egg 3 0.14
4 foo spam egg 4 -0.76
为此我做了以下修复:
columnShift = df.columns[-3:]
indexes = [i for i,x in enumerate(df.B) if x =='egg']
for i in indexes:
for c in np.arange(1,len(columnShift)):
df.loc[i,columnShift[-c]] = df.loc[i,columnShift[-(c+1)]]
它是功能性的,但感觉不优雅并且需要很长时间。因此,我想知道是否有更好的解决方案适用于更大的数据帧。
解决方案
假设原始df是
df =
A B C D E
0 foo spam egg 0 0
1 bar egg 1 0.84 NaN
2 bar egg 2 0.91 NaN
3 foo spam egg 3 0.14
4 foo spam egg 4 -0.76
下面的代码应该做你需要的:
new_cols = [cols[0], cols[-1]] + cols[1:-1].tolist()
part = df.iloc[1:3, :][new_cols]
df.iloc[1:3, :] = part.values
推荐阅读
- python - 有没有一种有效的方法来获取 numpy 中顶点的发生率?
- python - 如何在 Heroku 中运行后台任务?
- javascript - 将日期作为 url 参数发送到 API 时反应日期时间格式不起作用
- stripe-payments - 类型参数 'com.stripe.android.PaymentIntentResult' 不在其范围内;应该扩展'com.stripe.android.model.StripeModel'
- postgresql - 通过私有 IP 从 GKE 连接到 Cloud SQL
- r - 如何在for循环中设置条件以中断
- html - 如何在没有类或 id 的 div 上应用 css?
- gradle - Gradle - 从应用文件调用父文件函数
- html - 如何在垫卡中居中标题?
- javascript - 我正在尝试将子对象文字关联到父对象文字