我在pandas dataframe中有许多列中的数据,如下所示:
col1| col2| ...| col99 |col100
MBs| Gigabytes|...| MBs| |MBs
Megabytes| GBs|...|Megabytes |Gigabytes
GB | Megabytes| ...|Gigabytes|Gigabytes
GBs | GB |... |MBs |Gigabytes
Gigabytes|Megabytes|...|Gigabytes |Megabytes
我还有一本字典,它能映射相似的值。例如
^{pr2}$我想用dict中的映射值替换列中的每个值。目前我正在尝试执行类似的操作,但是遇到了一个错误。预期产出应为
col1|col2|...|col99|col100
MB| GB|...| MB| |MB
MB|GB|...|MB|GB
GB |MB|...|GB|GB
GB|GB|...|MB|GB
GB|MB|...|GB|MB
# My current implementation
df = df.apply(lambda x: x.astype(str).replace('GBs', 'GB').replace('MBs', 'MB').replace('Megabytes', 'MB').replace('Gigabytes', 'GB'))
有人能给我一个正确而快速的方法吗?在
试试这个:
这将仅将
mapping
应用于string
列如果所有列都是string(
^{pr2}$object
)数据类型:或者正如@JohnGalt在评论中提出的:
pd.DataFrame.replace
可以使用字典字典,其中第一级键指定替换时要应用值的列。在我们可以使用字典理解来只过滤那些属于
dtype == object
的列相关问题 更多 >
编程相关推荐