Python DataFrame:将所选值替换或组合到主 DataFrame 中
Python DataFrame: replace or combine selected values into main DataFrame
我有两个 pandas DataFrame,如下所示。它包含字符串和 np.nan 值。
df =
A B C D E F
0 aaa abx fwe dcs NaN gsx
1 bbb daf dxs fsx NaN ewe
2 ccc NaN NaN NaN NaN dfw
3 ddd NaN NaN asc NaN NaN
4 eee NaN NaN cse NaN NaN
5 fff NaN NaN wer xer NaN
df_result =
A C E F
2 sfa NaN NaN wes
4 web NaN NaN NaN
5 NaN wwc wew NaN
我想要的是将整个 df_result DataFrame 复制到具有相应列和索引的 df DataFrame。所以我的输出将是 =
A B C D E F
0 aaa abx fwe dcs NaN gsx
1 bbb dxs fsx fsx NaN ewe
2 sfa NaN NaN NaN NaN wes
3 wen NaN NaN asc NaN NaN
4 web NaN NaN cse NaN NaN
5 NaN NaN wwc wer wew NaN
所以基本上我想将 df_result 的精确值复制到 df,甚至认为有 np.nan 值,例如 A:5(从 fff 更改为 NaN)。另外,我需要保持列的顺序不变。请让我知道执行此操作的有效方法。谢谢!
假设您的列和索引设置正确,您可以直接说。
df.loc[df_result.index,df_result.columns] = df_result
它的工作示例:
import pandas as pd
import numpy as np
df=pd.DataFrame(data=[ [1 for y in range(5)] for i in range(5)] , columns=list(range(5)))
df.loc[0::2,2]=np.nan
print(df)
df2 = pd.DataFrame(data=[ [2 for y in range(3)] for i in range(2)] , columns=list(range(2,5)),index=range(1,3))
df2.loc[:,3] = np.nan
print(df2)
df.loc[df2.index,df2.columns] = df2
print(df)
df.update(dfr.fillna('NaN'))
df.replace('NaN',np.nan)
Out[501]:
A B C D E F
0 aaa abx fwe dcs NaN gsx
1 bbb daf dxs fsx NaN ewe
2 sfa NaN NaN NaN NaN wes
3 ddd NaN NaN asc NaN NaN
4 web NaN NaN cse NaN NaN
5 NaN NaN wwc wer wew NaN
我有两个 pandas DataFrame,如下所示。它包含字符串和 np.nan 值。 df =
A B C D E F
0 aaa abx fwe dcs NaN gsx
1 bbb daf dxs fsx NaN ewe
2 ccc NaN NaN NaN NaN dfw
3 ddd NaN NaN asc NaN NaN
4 eee NaN NaN cse NaN NaN
5 fff NaN NaN wer xer NaN
df_result =
A C E F
2 sfa NaN NaN wes
4 web NaN NaN NaN
5 NaN wwc wew NaN
我想要的是将整个 df_result DataFrame 复制到具有相应列和索引的 df DataFrame。所以我的输出将是 =
A B C D E F
0 aaa abx fwe dcs NaN gsx
1 bbb dxs fsx fsx NaN ewe
2 sfa NaN NaN NaN NaN wes
3 wen NaN NaN asc NaN NaN
4 web NaN NaN cse NaN NaN
5 NaN NaN wwc wer wew NaN
所以基本上我想将 df_result 的精确值复制到 df,甚至认为有 np.nan 值,例如 A:5(从 fff 更改为 NaN)。另外,我需要保持列的顺序不变。请让我知道执行此操作的有效方法。谢谢!
假设您的列和索引设置正确,您可以直接说。
df.loc[df_result.index,df_result.columns] = df_result
它的工作示例:
import pandas as pd
import numpy as np
df=pd.DataFrame(data=[ [1 for y in range(5)] for i in range(5)] , columns=list(range(5)))
df.loc[0::2,2]=np.nan
print(df)
df2 = pd.DataFrame(data=[ [2 for y in range(3)] for i in range(2)] , columns=list(range(2,5)),index=range(1,3))
df2.loc[:,3] = np.nan
print(df2)
df.loc[df2.index,df2.columns] = df2
print(df)
df.update(dfr.fillna('NaN'))
df.replace('NaN',np.nan)
Out[501]:
A B C D E F
0 aaa abx fwe dcs NaN gsx
1 bbb daf dxs fsx NaN ewe
2 sfa NaN NaN NaN NaN wes
3 ddd NaN NaN asc NaN NaN
4 web NaN NaN cse NaN NaN
5 NaN NaN wwc wer wew NaN