如何删除 pandas 数据框中的 NaN 值,其列在另一个数据框中被引用为编码值,指示缺失值或未知值
How to remove NaN values in pandas dataframe whose columns are referenced in another dataframe as encoded values indicating missing or unknown values
数据帧 1
1 C1 C2 C3 . . . C85
2
3
4
.
.
800000 . . . . . .
跨行缺失值的列
0 32
100 10
200 7
300 7
400 6
1000 5
2000 3
3000 3
9000 3
12000 2
13000 1
15000 1
20000 1
30000 1
40000 1
50000 1
60000 1
数据帧 2
attribute missing_or_unknown
C1 [-1,X]
C2 [XX]
. .
. .
C85 []
缺失值按 value_Counts()
排序
[-1] 26
[-1,9] 17
[-1,0] 16
[0] 12
[] 10
[-1,0,9] 1
[-1,XX] 1
[-1,X] 1
[XX] 1
需要
Dataframe 1 是主 table,它有许多缺失值或未知值需要清理。
但是,需要通过引用数据帧 2 并使用 missing_or_unknown 列
中的那些编码指示符来确定
方法
为了能够做到这一点,我试图连接 2 个数据帧,看看是否可以将 missing_or_unknown 列添加到数据帧 1,然后才能继续并使用替换函数将这些指标替换为 np.nan
问题
当 2 个数据帧的行数不同时如何执行连接?基本上第一个数据框的列是第二个数据框中的行?
我建议您转置 Dataframe2 并将列标题替换为第一行的值,然后 concanate Dataframe1 和 Dataframe2。在此之后,您可以对结果 Dataframe 的 Row1 进行操作,以进一步将其替换为 "Nan" 值。
这是一个示例:
import pandas as pd
dummy_data1 = {
'C1': ['11', '12', '13', '14', '15', '16', '17', '18', '19', '20'],
'C2': ['A', 'E', 'I', 'M', 'Q', 'A', 'E', 'I', 'M', 'Q', ],
'C3': ['B', 'F', 'J', 'N', 'R', 'B', 'F', 'J', 'N', 'R', ],
'C4': ['C', 'G', 'K', 'O', 'S', 'C', 'G', 'K', 'O', 'S', ],
'C5': ['D', 'H', 'L', 'P', 'T', 'D', 'H', 'L', 'P', 'T', ]}
df1 = pd.DataFrame(dummy_data1, columns = ['C1', 'C2', 'C3', 'C4', 'C5'])
dummy_data2 = {
'attribute': ['C1', 'C2', 'C4', 'C5', 'C3', ],
'missing_or_unknown': ['X1', 'X2', 'X4', 'X5', 'X3', ]}
df2 = pd.DataFrame(dummy_data2, columns = ['attribute', 'missing_or_unknown'])
df2_transposed = df2.transpose()
print("df2_transposed=\n", df2_transposed)
df2_transposed.columns = df2_transposed.iloc[0]
df2_transposed = df2_transposed.drop(df2_transposed.index[0])
print("df2_transposed with HEADER Replaced=\n", df2_transposed)
df_new = pd.concat([df2_transposed, df1])
print("df_new=\n", df_new)
数据帧 1
1 C1 C2 C3 . . . C85
2
3
4
.
.
800000 . . . . . .
跨行缺失值的列
0 32
100 10
200 7
300 7
400 6
1000 5
2000 3
3000 3
9000 3
12000 2
13000 1
15000 1
20000 1
30000 1
40000 1
50000 1
60000 1
数据帧 2
attribute missing_or_unknown
C1 [-1,X]
C2 [XX]
. .
. .
C85 []
缺失值按 value_Counts()
排序[-1] 26
[-1,9] 17
[-1,0] 16
[0] 12
[] 10
[-1,0,9] 1
[-1,XX] 1
[-1,X] 1
[XX] 1
需要 Dataframe 1 是主 table,它有许多缺失值或未知值需要清理。 但是,需要通过引用数据帧 2 并使用 missing_or_unknown 列
中的那些编码指示符来确定方法 为了能够做到这一点,我试图连接 2 个数据帧,看看是否可以将 missing_or_unknown 列添加到数据帧 1,然后才能继续并使用替换函数将这些指标替换为 np.nan
问题 当 2 个数据帧的行数不同时如何执行连接?基本上第一个数据框的列是第二个数据框中的行?
我建议您转置 Dataframe2 并将列标题替换为第一行的值,然后 concanate Dataframe1 和 Dataframe2。在此之后,您可以对结果 Dataframe 的 Row1 进行操作,以进一步将其替换为 "Nan" 值。
这是一个示例:
import pandas as pd
dummy_data1 = {
'C1': ['11', '12', '13', '14', '15', '16', '17', '18', '19', '20'],
'C2': ['A', 'E', 'I', 'M', 'Q', 'A', 'E', 'I', 'M', 'Q', ],
'C3': ['B', 'F', 'J', 'N', 'R', 'B', 'F', 'J', 'N', 'R', ],
'C4': ['C', 'G', 'K', 'O', 'S', 'C', 'G', 'K', 'O', 'S', ],
'C5': ['D', 'H', 'L', 'P', 'T', 'D', 'H', 'L', 'P', 'T', ]}
df1 = pd.DataFrame(dummy_data1, columns = ['C1', 'C2', 'C3', 'C4', 'C5'])
dummy_data2 = {
'attribute': ['C1', 'C2', 'C4', 'C5', 'C3', ],
'missing_or_unknown': ['X1', 'X2', 'X4', 'X5', 'X3', ]}
df2 = pd.DataFrame(dummy_data2, columns = ['attribute', 'missing_or_unknown'])
df2_transposed = df2.transpose()
print("df2_transposed=\n", df2_transposed)
df2_transposed.columns = df2_transposed.iloc[0]
df2_transposed = df2_transposed.drop(df2_transposed.index[0])
print("df2_transposed with HEADER Replaced=\n", df2_transposed)
df_new = pd.concat([df2_transposed, df1])
print("df_new=\n", df_new)