我需要对 Pandas 执行的常见操作是从Excel文件中读取表格,然后从所有字段中删除分号。这些列通常是混合数据类型,在尝试执行以下操作时遇到了AtributeError:

for col in cols_to_check:
    df[col] = df[col].map(lambda x: x.replace(';',''))



当我在替换之前将其包装在str()中时,我遇到了Unicode字符的问题,例如
for col in cols_to_check:
    df[col] = df[col].map(lambda x: str(x).replace(';',''))



在excel中,这是一个非常简单的操作,只需将;替换为空字符串即可。无论数据类型如何,我如何在整个数据帧中以类似的方式在 Pandas 中执行此操作?还是我错过了什么?

最佳答案

您可以使用 DataFrame.replace ,并选择使用subset:

df = pd.DataFrame({'A':[1,2,3],
                   'B':[4,5,6],
                   'C':['f;','d:','sda;sd'],
                   'D':['s','d;','d;p'],
                   'E':[5,3,6],
                   'F':[7,4,3]})

print (df)
   A  B       C    D  E  F
0  1  4      f;    s  5  7
1  2  5      d:   d;  3  4
2  3  6  sda;sd  d;p  6  3

cols_to_check = ['C','D', 'E']

print (df[cols_to_check])
        C    D  E
0      f;    s  5
1      d:   d;  3
2  sda;sd  d;p  6

df[cols_to_check] = df[cols_to_check].replace({';':''}, regex=True)
print (df)
   A  B      C   D  E  F
0  1  4      f   s  5  7
1  2  5     d:   d  3  4
2  3  6  sdasd  dp  6  3

关于python - 从整个数据框中删除字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42135409/

10-12 22:18
查看更多