如何避免覆盖列(标记列的多个条件语句)pandas

问题描述 投票:0回答:1

我需要将列列表更新为适当的数据类型。有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', '')
python pandas
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.