我需要将列列表更新为适当的数据类型。有1500列,但很多都是重复。我正在尝试编写一个脚本,我可以说“Key”和“声明”之类的东西为BIGINT,而DT中的任何内容都应该是日期,“name”应该是VARCHAR。
下面的代码会恰当地标识行,但仅限于单独运行时。那么如何组合成一个,以便最后一行不会覆盖以前的那一行。
到目前为止,这是我的df和代码:
df = pd.DataFrame({'ColumnTitles': ['Key', 'Claim', 'First_dt', 'Second_dt', 'Third_dt','name','Claim', 'Key'],
'CurrentDataTypes': ['String','String','String','String','String','String','String','String']})
bigint = ['Key','Claim']
bigint = ['name']
df['Updated'] = df[df['ColumnTitles'].isin(bigint)]
df['Updated'] = df[df['ColumnTitles'].isin(bigint)]
df['Updated'] = np.where(df['ColumnTitles'].str.contains("_dt", case=False, na=False), 'Date', '')
答案 0 :(得分:1)
我没有看到您的问题与链接之间的相关性,这是一个解决方案
bigint = ['Key','Claim']
df.loc[df['ColumnTitles'].isin(bigint),'Updatee']='bigint'
bigint = ['name']
df.loc[df['ColumnTitles'].isin(bigint),'Updatee']='VARCHAR'
df=df.fillna('Date')
df
Out[385]:
ColumnTitles CurrentDataTypes Updatee
0 Key String bigint
1 Claim String bigint
2 First_dt String Date
3 Second_dt String Date
4 Third_dt String Date
5 name String VARCHAR
6 Claim String bigint
7 Key String bigint