gpt4 book ai didi

python - 如何将数据框中的周期值替换为空或其他值?

转载 作者:太空宇宙 更新时间:2023-11-03 15:50:36 25 4
gpt4 key购买 nike

以下代码:

print(PB_PID_group)
print(type(PB_PID_group))

给我:

PI
. [., 5398, 5482, 5467]
1311 [5185, ., 5398, 5467, 5576]
1667 [., 6446]
3352 [.]
935 [.]
Name: PID, dtype: object
<class 'pandas.core.series.Series'>

然后我将其更改为数据框( Pandas )

PB_PID_df = pd.DataFrame(PB_PID_group)

print(type(PB_PID_df))

这给了我:

<class 'pandas.core.frame.DataFrame'>

然后我将数据帧写入文件:

pd.DataFrame.to_csv(PB_PID_df,'updated_df_table.txt', sep='\t', index=True, na_rep='none')

写道:

PI      PID
. ['.' '5398' '5482' '5467']
1311 ['5185' '.' '5398' '5467' '5576']
1667 ['.' '6446']
3352 ['.']
935 ['.']

我想删除包含 PI 的行值为句点 (.),并且仅从 PID 中删除句点。专栏。

我试过了。

PB_PID_df['PID'] = PB_PID_df['PID'].replace(to_replace='.', value='na', regex=True)

我也尝试过不使用 regex和其他方法选项,但它不起作用。

任何建议。

谢谢

最佳答案

当您从现有系列创建 DataFrame 时,索引被重新使用,因此要删除初始行,您需要调用 drop 并传递该行的标签 '.'.

由于您现在将列表作为 dtype,这很奇怪,因此您不能再使用 replace ,因为它会查找要查找的确切值,并且不会理解列表类型,因此您可以使用 apply 迭代测试每个值并替换为字符串 'na':

In [12]:
# setup some data
df = pd.DataFrame({'PID':[['.',5398, 5482, 5467], [5185, '.', 5398, 5467, 5576]]}, index=['.',1311])
df

Out[12]:
PID
. [., 5398, 5482, 5467]
1311 [5185, ., 5398, 5467, 5576]

现在drop并使用apply替换为lambda和列表理解:

In [13]:
df.drop('.',inplace=True)
df['PID'] = df['PID'].apply(lambda x: [x if x != '.' else 'na' for x in x])
df

Out[13]:
PID
1311 [5185, na, 5398, 5467, 5576]

编辑

要回答注释中的附加查询,要删除值,请修改列表理解,以便 if 条件位于末尾:

In [19]:
df['PID'] = df['PID'].apply(lambda x: [x for x in x if x != '.'])
df

Out[19]:
PID
1311 [5185, 5398, 5467, 5576]

关于python - 如何将数据框中的周期值替换为空或其他值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41336317/

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