gpt4 book ai didi

python - 如果指定列中的标志(匹配前 6 个字母)是 "1",将数据转换为 NaN 的方法是什么?

转载 作者:行者123 更新时间:2023-11-28 21:06:56 28 4
gpt4 key购买 nike

如果指定列中的标志(匹配前 6 个字母)为“1”,如何将数据转换为 NaN?

Dataframes 表示数据和标志。两个数据框之间的列顺序不同。

这些框架有数百列和 50 万条记录。

df
123456.A 123456.B ... 456789.A 456789.B
2016-01-01 00:00 5.6 0.3 ... 6.7 1.1
2016-01-01 00:01 5.4 0.4 ... 6.7 1.3
2016-01-01 00:02 5.1 0.2 ... 6.7 1.5
....
2016-12-31 23:57 5.7 0.4 ... 6.7 1.2
2016-12-31 23:58 5.6 0.3 ... 6.7 1.4
2016-12-31 23:59 5.4 0.4 ... 6.7 1.5

flag_t
456789 123456 ... 342546 821453
2016-01-01 00:00 1 0 ... 0 0
2016-01-01 00:01 0 0 ... 0 0
2016-01-01 00:02 1 1 ... 0 0
....
2016-12-31 23:57 0 1 ... 1 1
2016-12-31 23:58 0 0 ... 0 1
2016-12-31 23:59 0 0 ... 0 1

这是我想要得到的表格:

df
123456.A 123456.B ... 456789.A 456789.B
2016-01-01 00:00 5.6 0.3 ... NaN NaN
2016-01-01 00:01 5.4 0.4 ... 6.7 1.3
2016-01-01 00:02 NaN NaN ... NaN NaN
....
2016-12-31 23:57 NaN NaN ... 6.7 1.2
2016-12-31 23:58 5.6 0.3 ... 6.7 1.4
2016-12-31 23:59 5.4 0.4 ... 6.7 1.5

最佳答案

  • '.'拆分
  • 添加 df2.where(df2 == 0)
    • 将在零处为零,在其他地方为 np.nan。
    • 我这样做是因为我可以在特定级别添加,在其余级别上广播。

df.columns = df.columns.str.split('.', expand=True)

df = df.add(df2.where(df2==0), level=0)

df.columns = df.columns.map('.'.join)

print(df)

123456.A 123456.B 456789.A 456789.B
2016-01-01 00:00:00 5.6 0.3 NaN NaN
2016-01-01 00:01:00 5.4 0.4 6.7 1.3
2016-01-01 00:02:00 NaN NaN NaN NaN
2016-12-31 23:57:00 NaN NaN 6.7 1.2
2016-12-31 23:58:00 5.6 0.3 6.7 1.4
2016-12-31 23:59:00 5.4 0.4 6.7 1.5

关于python - 如果指定列中的标志(匹配前 6 个字母)是 "1",将数据转换为 NaN 的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42105726/

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