Python熊猫,如何将数据框的NA值替换为在另一个数据框中查找的值?

用户名

假设我有一个数据框:

>>> import pandas as pd
>>> import numpy as np
>>> rand = np.random.RandomState(42)
>>> data_points = 10
>>> dates = pd.date_range('2020-01-01', periods=data_points, freq='D')
>>> state_city = [('USA', 'Washington'), ('France', 'Paris'), ('Germany', 'Berlin')]
>>>
>>> df = pd.DataFrame()
>>> for _ in range(data_points):
...     state, city = state_city[rand.choice(len(state_city))]
...     df_row = pd.DataFrame(
...         {
...             'time' : rand.choice(dates),
...             'state': state,
...             'city': city,
...             'val1': rand.randint(0, data_points),
...             'val2': rand.randint(0, data_points)
...         }, index=[0]
...     )
...
...     df = pd.concat([df, df_row], ignore_index=True)
...
>>> df = df.sort_values(['time', 'state', 'city']).reset_index(drop=True)
>>> df.loc[rand.randint(0, data_points, size=rand.randint(1, 3)), ['state']] = pd.NA
>>> df.loc[rand.randint(0, data_points, size=rand.randint(1, 3)), ['city']] = pd.NA
>>> df.val1 = df.val1.where(df.val1 < 5, pd.NA)
>>> df.val2 = df.val2.where(df.val2 < 5, pd.NA)
>>>
>>> df
        time    state        city  val1  val2
0 2020-01-03      USA  Washington     4     2
1 2020-01-04   France        <NA>  <NA>     1
2 2020-01-04  Germany      Berlin  <NA>     4
3 2020-01-05  Germany      Berlin  <NA>  <NA>
4 2020-01-06   France       Paris     1     4
5 2020-01-06  Germany      Berlin     4     1
6 2020-01-08  Germany      Berlin     4     3
7 2020-01-10  Germany      Berlin     2  <NA>
8 2020-01-10     <NA>  Washington  <NA>  <NA>
9 2020-01-10     <NA>  Washington     2  <NA>
>>>

如您所见,有一些值。我想尽可能地估算州/城市的价值。为此,我将生成可以提供帮助的数据框。

>>> known_state_city = df[['state', 'city']].dropna().drop_duplicates()
>>> known_state_city
     state        city
0      USA  Washington
2  Germany      Berlin
4   France       Paris

好的,现在我们有了所有州/市的组合。

如何在已知城市时使用known_state_city数据框来填充空状态?我可以找到填充城市的空州:

>>> df.loc[df.state.isna() & df.city.notna(), 'city']
8    Washington
9    Washington
Name: city, dtype: object

但是,如何在不破坏索引值(8和9)的情况下用来自known_state_city的状态替换华盛顿,以替换df.state值?如果我在known_state_city中没有所有组合,如何用我拥有的内容更新df中的状态?

广晃

我们可以做的fillnamap两次:

# fill empty state
df['state'] = df['state'].fillna(df['city'].map(known_state_city.set_index('city')['state']))

# fill empty city
df['city'] = df['city'].fillna(df['state'].map(known_state_city.set_index('state')['city']))

输出:

         time    state        city  val1  val2
0  2020-01-03      USA  Washington   4.0   2.0
1  2020-01-04   France       Paris   NaN   1.0
2  2020-01-04  Germany      Berlin   NaN   4.0
3  2020-01-05  Germany      Berlin   NaN   NaN
4  2020-01-06   France       Paris   1.0   4.0
5  2020-01-06  Germany      Berlin   4.0   1.0
6  2020-01-08  Germany      Berlin   4.0   3.0
7  2020-01-10  Germany      Berlin   2.0   NaN
8  2020-01-10      USA  Washington   NaN   NaN
9  2020-01-10      USA  Washington   2.0   NaN

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

熊猫:根据条件将数据框中的值替换为另一个数据框中的值

来自分类Dev

如何根据另一个数据框中的查找值替换熊猫数据框值?

来自分类Dev

熊猫-通过在另一个数据框中查找来替换值

来自分类Dev

将数据框中的值替换为另一个数据框中的值

来自分类Dev

熊猫数据框将值除以另一个数据框中的值

来自分类Dev

根据条件,将数据框的某些值替换为另一个数据框中的值

来自分类Dev

使用Pandas Python将NaN值替换为另一个数据框

来自分类Dev

如何使用熊猫从另一个数据框中的一个值中查找值?

来自分类Dev

PANDAS - 如何根据另一个数据框中的查找表替换数据框中的值

来自分类Dev

在一个数据框中查找零值并替换为从另一个数据框中最近的日期时间读数

来自分类Dev

用另一个数据框中的值替换熊猫数据框中的多个值的最快方法

来自分类Dev

根据另一个数据框中的NA将一个数据框中的值转换为NA

来自分类Dev

熊猫用另一个数据框的值替换一个数据框的值

来自分类Python

根据另一个数据框python熊猫替换列值-更好的方法?

来自分类Dev

熊猫:如何将一个数据框的值映射到另一个数据框?

来自分类Dev

如何使用熊猫间隔查找值,以填充另一个数据框

来自分类Dev

遍历数据框并替换为另一个数据框的值

来自分类Python

如何将一个数据框的单列中的值映射到另一个数据框的两列并提取映射的值?

来自分类Dev

如果值在另一个数据框中,则用NA替换多列

来自分类Dev

熊猫:如何将多个列值与另一个数据框匹配并生成输出

来自分类Dev

从另一个数据框中更新熊猫数据框中的特定值

来自分类Dev

如何将一个熊猫数据框中的特定值复制到另一个?

来自分类Dev

如何拆分数据框中的值并替换为另一个值

来自分类Dev

R:将data.frame中的NA替换为另一个数据框中相同位置的值

来自分类Dev

使用另一个数据框替换数据框中的零值

来自分类Dev

用另一个数据框替换数据框中的值

来自分类Dev

从另一个数据框中替换一个数据框中的值

来自分类Dev

如何用另一个数据框(熊猫)中的值更新空数据框值?

来自分类Dev

如何将熊猫数据框的值填充到具有不同datetimeindex的另一个数据框

Related 相关文章

  1. 1

    熊猫:根据条件将数据框中的值替换为另一个数据框中的值

  2. 2

    如何根据另一个数据框中的查找值替换熊猫数据框值?

  3. 3

    熊猫-通过在另一个数据框中查找来替换值

  4. 4

    将数据框中的值替换为另一个数据框中的值

  5. 5

    熊猫数据框将值除以另一个数据框中的值

  6. 6

    根据条件,将数据框的某些值替换为另一个数据框中的值

  7. 7

    使用Pandas Python将NaN值替换为另一个数据框

  8. 8

    如何使用熊猫从另一个数据框中的一个值中查找值?

  9. 9

    PANDAS - 如何根据另一个数据框中的查找表替换数据框中的值

  10. 10

    在一个数据框中查找零值并替换为从另一个数据框中最近的日期时间读数

  11. 11

    用另一个数据框中的值替换熊猫数据框中的多个值的最快方法

  12. 12

    根据另一个数据框中的NA将一个数据框中的值转换为NA

  13. 13

    熊猫用另一个数据框的值替换一个数据框的值

  14. 14

    根据另一个数据框python熊猫替换列值-更好的方法?

  15. 15

    熊猫:如何将一个数据框的值映射到另一个数据框?

  16. 16

    如何使用熊猫间隔查找值,以填充另一个数据框

  17. 17

    遍历数据框并替换为另一个数据框的值

  18. 18

    如何将一个数据框的单列中的值映射到另一个数据框的两列并提取映射的值?

  19. 19

    如果值在另一个数据框中,则用NA替换多列

  20. 20

    熊猫:如何将多个列值与另一个数据框匹配并生成输出

  21. 21

    从另一个数据框中更新熊猫数据框中的特定值

  22. 22

    如何将一个熊猫数据框中的特定值复制到另一个?

  23. 23

    如何拆分数据框中的值并替换为另一个值

  24. 24

    R:将data.frame中的NA替换为另一个数据框中相同位置的值

  25. 25

    使用另一个数据框替换数据框中的零值

  26. 26

    用另一个数据框替换数据框中的值

  27. 27

    从另一个数据框中替换一个数据框中的值

  28. 28

    如何用另一个数据框(熊猫)中的值更新空数据框值?

  29. 29

    如何将熊猫数据框的值填充到具有不同datetimeindex的另一个数据框

热门标签

归档