Pandas批量处理DataFrame每行删除NaN转Series及DataFrame的实现方法
解决方案
你可以通过遍历DataFrame的行批量完成处理,推荐优先将所有处理结果存入字典统一管理,避免污染全局变量空间,代码如下:
import pandas as pd import numpy as np # 你的原始DataFrame构造代码 data = {'card_name': ['Diamonds', 'Clovers', 'HorseShoe'], '$20': [1000.0, 10.0, np.nan], '$25': [500.0, np.nan, 1873.0], '$30': [25, 213, 4657], '$40': [np.nan, 2199.0, np.nan], '$50': [1500.0, np.nan, 344.0], '$70': [np.nan, 43.0, 239.0], '$75': [30.0, 2.0, np.nan], '$100': [1.0, np.nan, 748.0]} df = pd.DataFrame(data) # 批量处理核心代码 card_result = {} for _, row in df.iterrows(): card_name = row['card_name'] # 执行和单条处理完全一致的逻辑:删NaN→转DataFrame card_result[card_name] = row.dropna().to_frame()
使用时直接通过卡片名取对应结果即可,和你之前单独写代码得到的输出完全一致:
# 调用示例 print(card_result['Diamonds']) print(card_result['Clovers']) print(card_result['HorseShoe'])
如果你确实需要直接用Diamonds/Clovers这类变量名直接访问处理结果,可以用动态赋值的方式实现(不推荐,容易造成变量冲突):
for _, row in df.iterrows(): card_name = row['card_name'] globals()[card_name] = row.dropna().to_frame() # 直接访问变量 print(Diamonds)
内容的提问来源于stack exchange,提问作者peoplet
相关产品推荐
相关产品推荐

