python - 如何迭代多列数据框中的每个单独的列值?
问题描述
我有多个列数据框['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable']。
在能源供应列中,我想将列的单位从 Giga 转换为 Peta。但是在这个过程中
energy['Energy Supply']*= energy['Energy Supply']
,当值像“....”(缺失值由此表示)时,也会被相乘或说重复。此外,列中的字符串值也成倍增加。(例如原始:Peta,操作后:PetaPetaPetaPeta...)。
为了阻止这种情况发生,我正在运行:
energy = pd.read_excel("Energy Indicators.xls",skiprows = 16, skip_footer = 38)
energy.drop(['Unnamed: 0','Unnamed: 1'],axis = 1, inplace = True)
energy.columns = ['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable']
for i in energy['Energy Supply']:
if (isinstance(energy[i],int) == True):
energy['Energy Supply'][i]=energy['Energy Supply'][i]*1000000
return (energy)
但是我没有得到结果,即仅更改整数类型变量的值,并且没有任何变化。
我认为问题出在哪里,前两行将给出错误条件,因为第一行是“字符串”,基于此,程序不会修改值,而我想单独检查值是否为整数类型,如果是,则将数字乘以 1,000,000。
输入:
Country Energy Supply Energy Supply per Capita % Renewable
0 NaN Petajoules Gigajoules %
1 Afghanistan 321 10 78.6693
2 Albania 102 35 100
3 Algeria 1959 51 0.55101
4 American Samoa ... ... 0.641026
预期输出:
Country Energy Supply Energy Supply per Capita % Renewable
0 NaN Petajoules Gigajoules %
1 Afghanistan 3210000 10 78.6693
2 Albania 1020000 35 100
3 Algeria 19590000 51 0.55101
4 American Samoa ... ... 0.641026
电流输出:
Country Energy Supply Energy Supply per Capita % Renewable
0 NaN PetajoulesPeta. Gigajoules %
1 Afghanistan 3210000 10 78.6693
2 Albania 1020000 35 100
3 Algeria 19590000 51 0.55101
4 American Samoa ........ ... 0.641026
解决方案
您可以使用str.isnumeric
检查字符串是否为数字然后相乘。
energy['Energy Supply'] = energy['Energy Supply'].apply(lambda x: int(x) * 1000000 if str(x).isnumeric() else x)
print (energy)
Country Energy Supply Energy Supply per Capita % Renewable
0 NaN Petajoules Gigajoules %
1 Afghanistan 321000000 10 78.6693
2 Albania 102000000 35 100
3 Algeria 1959000000 51 0.55101
4 American Samoa ... .. 0.641026
推荐阅读
- c# - 如何为 2 个不同的变量设置计时器?
- mysql - 上传多个文件后如何得到响应?
- java - 为什么 for(T t : this) 有效,它是什么意思?
- regex - 如何在 Excel 中验证正则表达式
- camera - 有人可以告诉我在哪里可以阅读激光雷达相机交叉校准的主题
- flutter - Flutter webrtc PeerConnection 无法在 have-remote-offer 或 have-local-pranswer 之外的状态下创建答案
- r - 如何使用不同类型的键索引 data.table
- c# - C#:如何将对象数组作为参数传递
- c# - 无法将类型字符串隐式转换为“UnityEngine.UI.Text”
- java - 数据库对象中的Java Apache POI Excel文件映射与HeaderColumn策略类似?