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

时间:2018-02-28 16:43:19

标签: python pandas

我需要将列列表更新为适当的数据类型。有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', '')

1 个答案:

答案 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