python - 熊猫适用于未知列
问题描述
我有以下数据框:
position a_0 a_1 a_2 a_3 a_4 new_value
2 10 13 100
3 12 16 13 120
2 14 12 140
4 15 11 16 16 150
我想创建以下内容:
position a_0 a_1 a_2 a_3 a_4 new_value
2 10 13 100 100
3 12 16 13 120 120
2 14 12 140 140
4 15 11 16 16 150 150
本质上,将索引处的每一行设置position
为等于new_value
。理想情况下不使用 for 循环。
困难在于引用不同的列来为每一行设置一个值。我唯一的想法是将原始数据帧分解为更小的数据帧(基于 的值position
),然后使用该apply
函数。
任何其他想法都会非常有帮助!
谢谢
解决方案
从您的数据来看,尚不清楚空白单元格是np.nan
还是空字符串''
,以及数据类型是什么。Aprint(df.to_dict())
本来可以更好。也就是说,让我们假设这些是空字符串''
:
# only work on interested column
s = df.loc[:,'a_0':'a_4']
# use `s.isna()` if they are `None` or `NaN`
df.loc[:, 'a_0':'a_4'] = np.where(s.eq('').cumsum(1).eq(1),
df['new_val'].values[:,None],s)
输出:
position a_0 a_1 a_2 a_3 a_4 new_val
0 2 10 13 100.0 100
1 3 12 16 13.0 120 120
2 2 14 12 140.0 140
3 4 15 11 16.0 16 150 150
推荐阅读
- r - 如何从带有数字指示的列表中获取R中的数据框
- r - 如何用 R 绘制大笔款项?
- django - 当我单击页面时,此错误会引发 Reverse for 'delete' with arguments '('',)' not found。尝试了 1 种模式:['delete/(?P
[0-9]+)$'] - flutter - 如何在 Flutter 中将额外参数传递给 onExpansionChanged?
- python - 在硒中找不到任何元素
- python - 使用动态字符串变量调用 Python 函数
- apache-kafka - json消息的Kafka DLQ配置
- azure-web-app-service - Azure 不支持 ASP NET Core 5.0
- javascript - 如何从互联网连接虚拟机中的快速应用程序?
- python - 即使满足条件,显示消息语句也不会打印,我有点卡在这个上