python - 熊猫,根据条件复制一行
问题描述
我有一个这样的数据框 -
我想要做的是,每当 Col3 中有“X”时,该行应该被复制并且“X”应该更改为“Z”。结果必须如下所示 -
我确实尝试了一些方法,但没有任何效果!有人可以指导如何做到这一点。
解决方案
您可以首先过滤boolean indexing
并设置Z
为Col3
by DataFrame.assign
,加入原始 with ,使用 stabble 算法concat
排序索引,最后通过with创建默认值:DataFrame.sort_index
mergesort
RangeIndex
DataFrame.reset_index
drop=True
df = pd.DataFrame({
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'Col3':list('aXcdXf'),
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')
})
df = (pd.concat([df, df[df['Col3'].eq('X')].assign(Col3 = 'Z')])
.sort_index(kind='mergesort')
.reset_index(drop=True))
print (df)
B C Col3 D E F
0 4 7 a 1 5 a
1 5 8 X 3 3 a
2 5 8 Z 3 3 a
3 4 9 c 5 6 a
4 5 4 d 7 9 b
5 5 2 X 1 2 b
6 5 2 Z 1 2 b
7 4 3 f 0 4 b
推荐阅读
- c++ - 为什么 std::log10(16.0) / std::log10(2.0) != std::log2(16.0)?
- reactjs - 如何等待 Action Creator 结束?
- php - 自定义折扣在购物车中两次应用于分组产品 - WooCommerce
- r - R用辅助轴绘制数据系列
- c - C中的矩阵相乘(-1.#IND)
- c++ - QComboBox 未触发
- python - 如何在熊猫中将字符串转换为没有天数的日期时间
- pyspark - 文本挖掘:使用 Word2Vec 对有毒评论进行不良预测
- r - Group_by / 按函数内的两个变量汇总
- sql - 精度和比例命名背后的原因是什么?