我正在努力
开关值
之间
Range
&
Unit
基于以下数据帧的列
如果装置包含
-
然后更换
单位
到
范围
&
范围
到
单位
为此,我正在创建一个
unit_backup
这样我就不会弄丢原件了
单位
价值。
1.数据帧
sample_df = pd.DataFrame({'Range':['34-67',12,'gm','45-90'],
'Unit':['ml','35-50','10-100','mg']})
sample_df
Range Unit
0 34-67 ml
1 12 35-50
2 gm 10-100
3 45-90 mg
2.功能
下面是我尝试过的代码,但我遇到了错误:
def range_unit_correction_fn(df):
# creating backup of Unit column
df['unit_backup'] = df['Unit']
# condition check
if df['unit_backup'].str.contains("-"):
# if condition is True then replace `Unit` value with `Range` and `Range` with `unit_backup`
df['Unit'] = df['Range']
df['Range'] = df['unit_backup']
else:
# if condition False then keep the same value
df['Range'] = df['Range']
# drop the backup column
df = df.drop(['unit_backup'],axis=1)
return df
-
在数据帧上应用上述功能
sample_df = sample_df.apply(range_unit_correction_fn, axis=1)
sample_df
错误:
1061 def apply_standard(self):
1062 if self.engine == "python":
-> 1063 results, res_index = self.apply_series_generator()
...
----> 4 if df['unit_backup'].str.contains("-"):
5 df['Unit'] = df['Range']
6 df['Range'] = df['unit_backup']
AttributeError: 'str' object has no attribute 'str'
这似乎是个愚蠢的错误,但我不确定我哪里做错了。
感谢这里的任何帮助。