eine boolean-Array erstellen, die eine Chance auf 60/40 True/False die gleiche Größe wie die df Sie Füllung hat. Dann nutzen combine_first
import pandas as pd
import numpy as np
df = pd.DataFrame(index=list('ABCDEFGHIJ'), columns=list('abcdefghij'))
mask60 = np.random.rand(*df.shape) > 0.6
value40, value60 = 10, 20
fill = value60 * mask60 + value40 * (1 - mask60)
fill = value40 + mask60 * (value60 - value40)
fill_df = pd.DataFrame(fill, index=df.index, columns=df.columns)
Sieht aus wie:
print df.combine_first(fill_df)
a b c d e f g h i j
A 10 10 20 20 10 10 10 10 10 20
B 10 10 10 10 10 20 20 10 10 10
C 20 10 10 10 10 10 10 20 20 20
D 10 10 10 20 10 10 20 10 10 10
E 20 20 10 10 20 10 10 10 20 10
F 10 20 10 10 20 10 20 10 10 20
G 20 20 10 10 10 10 10 20 20 10
H 10 10 20 20 10 10 10 10 10 10
I 10 10 10 20 20 10 10 10 10 20
J 10 10 10 20 10 10 20 10 10 10
immer versuchen, eine zu schaffen [Minimal, vollständig und prüfbare Beispiel] (http://stackoverflow.com/help/mcve), wenn Fragen zu stellen. Im Falle von _pandas_ Fragen geben Sie bitte Beispiel _input_ und _output_ data sets (5-7 Zeilen im CSV/dict/JSON/Python-Code-Format _als Text_, so könnte man es verwenden, wenn Sie eine Antwort für Sie kodieren). Dies wird dazu beitragen, _situations_ zu vermeiden: 'Ihr Code funktioniert nicht für mich' oder' es funktioniert nicht mit meinen Daten', etc. – MaxU