【发布时间】:2022-01-25 23:08:45
【问题描述】:
我的数据集的一列既有字符串又有浮点数。在该列中,对于每个字符串,我尝试仅将其替换为字符串的前 5 个字符。
def isfloat(num):
try:
float(num)
return True
except ValueError:
return False
df = pd.DataFrame([[1, "Alligator"], [1, 3], [4, "Markets"]], columns=['A', 'B'])
以下两种方法似乎并没有改变实际的数据框。
df['B'].apply(lambda x: float(x) if isfloat(x) else x[0:5])
for index, row in df.iterrows():
if not isfloat(row.B):
row.B = row.B[0:5]
这个下一个方法导致警告“无法将系列转换为
df['B'] = np.where(not isfloat(df['B']), df['B'][0:5], df['B'])
我也尝试使用 .loc,但它似乎不适合,因为我需要根据条件进行更改。一个人会怎么做,或者我错过了什么?
【问题讨论】:
标签: python pandas dataframe replace conditional-statements