gpt4 book ai didi

python - 仅当它们的值不是某种数据类型时才连接 3+ 列

转载 作者:行者123 更新时间:2023-11-28 22:09:45 24 4
gpt4 key购买 nike

我有一个从 SQL Server 中提取的数据框。数据在转换为 .csv 时被错误地解析,现在我有包含错误数据的列。我正在尝试使用 Pandas 将所有内容移回原位。具体来说,我有一个应该包含“简短描述”的字段。一些描述被分隔到单独的字段中,我想将它们全部连接到适当的字段中。问题是,一些字段包含正确属于那里的日期,我需要在连接时跳过它们。

我尝试以多种不同的方式使用 df.apply(),但我似乎无法“跳过”包含 pd.Timestamp 的值> 数据类型。

例如:

df_test.apply(lambda x: ' '.join(x) if type(x) != pd.Timestamp else '')

例子 df:

df_so_test = pd.DataFrame([[1, 2, 'some description', pd.to_datetime('2019-01-01'), 'some more text', '']
, [2, 3, 'another description', 'some other text', '', pd.to_datetime('2019-01-02')]
, [3, 4, 'a third descirption', '', pd.to_datetime('2019-01-03'), pd.to_datetime('2019-01-04')]]
, columns=['random_col_1','random_col_2', 'short_desc', 'date_1', 'date_2', 'random_col_3'])

预期输出:

df_expected = pd.DataFrame([[1, 2, 'some description some more text', pd.to_datetime('2019-01-01'), '', '']
, [2, 3, 'another description some other text', pd.to_datetime('2019-01-02'), '', '']
, [3, 4, 'a third descirption', pd.to_datetime('2019-01-03'), pd.to_datetime('2019-01-04'), '']]
, columns=['random_col_1','random_col_2', 'short_desc', 'date_1', 'date_2', 'random_col_3'])

最佳答案

这里是一个使用apply 的例子。我需要做出的假设:

  1. 我假设唯一带有字符串对象的列是 'short_desc',否则更难以理解 'short_desc' 中的文本和这不是,因为我没有在您未对齐的数据中看到规律的模式。

  2. 我还假设您只有在需要时将两个日期移动到位,并且您的 'random_col_3' 是由错误的读数生成的,所以我要最终放弃它。

如果它们与发布的示例不对应,您可能需要修复真实列的名称。

def fixdb(row):
found = [x for x in row if isinstance(x, str)]
if len(found) > 1:
row['short_desc'] = ' '.join(found)
dates = [x for x in row if isinstance(x, pd.Timestamp)]

try:
row['date_1'] = dates[0]
except IndexError:
row['date_1'] = np.nan

try:
row['date_2'] = dates[1]
except IndexError:
row['date_2'] = np.nan

return row

df_out = df_so_test.apply(fixdb, axis=1).drop('random_col_3', axis=1)

这是使用提供的输出的df_out:

   random_col_1  random_col_2                            short_desc     date_1     date_2
0 1 2 some description some more text 2019-01-01 NaT
1 2 3 another description some other text 2019-01-02 NaT
2 3 4 a third descirption 2019-01-03 2019-01-04

关于python - 仅当它们的值不是某种数据类型时才连接 3+ 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57332569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com