我有以下数据:
df
A_Key B_ID C_Key D_NA
123 22 343.0 23
121 23 45.4 52
df.dtypes
导致以下内容:
df.dtypes
A_Key int64
B_ID int64
C_Key float
D_NA int64
如何使用" Key"有条件地更改任何列的dtypes?或" ID"到object
?我的实际数据框中有超过一百列,所以我希望有一个查找方法。
我当前的方法使用以下代码,但显然它不是pythonic并且需要单独的硬编码:
for col in ['A_Key',
'B_ID',
'C_Key']:
df[col] = df[col].astype('object')
我的df.dtypes输出应显示如下:
df.dtypes
A_Key object
B_ID object
C_Key object
D_NA int64
提前感谢您的帮助。
答案 0 :(得分:1)
这应该有效:
for col in df.columns:
if 'KEY' in col or 'ID' in col:
df[col] = df[col].astype('object')
答案 1 :(得分:1)
尝试
cols = df.columns[df.columns.str.contains('Key|ID')]
df[cols] = df[cols].astype('O')
print(df.dtypes)
A_Key object
B_ID object
C_Key object
D_NA int64
答案 2 :(得分:1)
使用不区分大小写的正则表达式与str.contains
匹配:
m = df.columns.str.contains('(?i)key|id')
df.iloc[:, m] = df.iloc[:, m].astype(object)
df.dtypes
A_Key object
B_ID object
C_Key object
D_NA int64
dtype: object