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

2024-10-02 00:38:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将列列表更新为适当的数据类型。共有1500列,但其中许多是重复的。我正在尝试编写一个脚本,在这个脚本中,我可以说像“Key”和“claim”之类的东西作为BIGINT,而以DT结尾的任何东西都应该是date,而“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', '')

Tags: key代码name脚本falsedf列表string
1条回答
网友
1楼 · 发布于 2024-10-02 00:38:27

我看不出你的问题和链接之间的关联,这里有一个解决方案

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

相关问题 更多 >

    热门问题