【问题标题】:Trying to replace NaNs with the [0:2] Index of the same Column尝试用同一列的 [0:2] 索引替换 NaN
【发布时间】:2021-12-14 01:58:04
【问题描述】:

我从网上提取了一些赌博数据并导出到 Excel。现在尝试清理一些列。

每个团队的点差被拉入同一列。我能够提取除整数之外的每一个。

代码:

df['Away Spread'] = df['Open'].str.extract(pat= '([-+A-Z].[^-/+].[0-9]?)').fillna(df['Open'].str[0:2])

输出:

期望的输出:

最佳输出:

如果不能在一行中完成最好的输出,请不要告诉我。我应该能够将“Away Spread”转换为浮动,然后使“Home Spread”相反。我不禁觉得我错过了我的正则表达式模式中的一些东西。

感谢所有观看的人!

【问题讨论】:

  • @RookiePython 你应该在你的问题中包含一个例子和期望的结果!

标签: python-3.x regex pandas


【解决方案1】:

你可以使用

df['Away Spread'] = df['Open'].str.extract(r'([-+]?\d*\.?\d+)', expand=False).fillna(df['Open'].str[0:2])

注意事项

  • .extract(r'([-+]?\d*\.?\d+)', expand=False) - 提取第一个正数或负数浮点数/整数(expand=False 将确保结果是系列,而不是 df)
  • .fillna(df['Open'].str[0:2]) 将使用 Open 列中的值的前两个字符填充不匹配的值。

查看 regex demo(我添加了 ^ 以仅匹配行首,另请参阅 m 标志)。

【讨论】:

    【解决方案2】:

    您可以通过查找+- 的第二个实例直接在Excel 中执行此操作

    上半场

    =LEFT(A1,MAX(FIND("+",A1),FIND("-",A1))-1)
    

    下半场

    =RIGHT(A1,LEN(A1)-LEN(B1))
    

    【讨论】:

    • 我真的只是想用 Python 来做,所以我可以每周自动做,但这也有效!!谢谢!
    猜你喜欢
    • 2023-03-20
    • 2022-06-20
    • 2021-12-26
    • 2023-03-03
    • 1970-01-01
    • 2023-03-10
    • 2013-03-12
    • 2021-04-12
    • 2017-04-22
    相关资源
    最近更新 更多