(, list data, ):
data = [1,2,3,4,5,8]
df = pd.DataFrame({'A':[1,3,8,8], 'B':[3,3,2,8],'x':[0.4,0.3,0.5,0.8]})
-, , :
flattened = pd.melt(df, value_vars=['A', 'B'])
:
variable value
0 A 1
1 A 3
2 A 8
3 A 8
4 B 3
5 B 3
6 B 2
7 B 8
, data ( , / , ):
in_data = flattened[flattened.value.isin(data)]
:
only_once = in_data.drop_duplicates(subset='value', keep=False)
:
variable value
0 A 1
6 B 2
, DF:
new_df = df.iloc[only_once.index // len(df.columns)]
:
A B x
0 1 3 0.4
2 8 2 0.5
...
new_df['single_number'] = only_once.value.values
:
A B x single_number
0 1 3 0.4 1
2 8 2 0.5 2
, , .reset_index(drop=True), 0 1.
:
, df df = pd.DataFrame({'A':[1,3,8,5], 'B':[3,3,2,8],'x':[0.4,0.3,0.5,0.8]}). new_df, .
, .
reset, .
df = pd.DataFrame({'A':[1,3,8,5], 'B':[3,3,2,8],'x':[0.4,0.3,0.5,0.8]})
unique = pd.melt(
df.reset_index(),
id_vars='index',
value_vars=['A', 'B'],
value_name='SingleNumber'
).drop_duplicates(subset='SingleNumber', keep=False)
:
index variable value
0 0 A 1
3 3 A 5
6 2 B 2
, , .
new_df = df.merge(unique, left_index=True, right_on='index')
:
A B x index variable SingleNumber
0 1 3 0.4 0 A 1
6 8 2 0.5 2 B 2
3 5 8 0.8 3 A 5
reset index .. .